《汇编语言》- 读书笔记 - 实验1 查看 CPU 和内存,用机器指令和汇编指令编程

news2024/11/23 20:35:20

《汇编语言》- 读书笔记 - 实验1 查看 CPU 和内存,用机器指令和汇编指令编程

  • 实验 1 查看 CPU 和内存,用机器指令和汇编指令编程
    • 1. 预备知识: Debug 的使用
      • r 修改或显示寄存器的值
      • d 查看内存数据
      • e 编辑内存中指定地址的内容
      • u 显示代码
      • t 单步执行一条指令
      • a 写入汇编指令
      • g 执行到指定位置
      • n 指定文件名
        • L 加载文件
        • W 保存文件
    • 2. 实验任务
      • 1. 使用 Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后 CPU 中相关寄存器中内容的变化。
      • 2. 将下面 3 条指令写入从 2000:0 开始的内存单元中,利用这 3 条指计算 2 的 8次方。
      • 3. 查看内存中的内容
      • 4. 向内存从 B8100H 开始的单元中填写数据
  • 参考资料

实验 1 查看 CPU 和内存,用机器指令和汇编指令编程

1. 预备知识: Debug 的使用

Debug 是 DOS、Windows 都提供的实模式(8086 方式)程序的调试工具。使用它,可以查看 CPU 各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

参数说明
r修改、显示寄存器内容
d查看内存数据内容
e编辑内存中指定地址的内容
u机器码转汇编代码显示
a写入汇编指令
t单步执行一条指令
p同 t ,但说到中断或call时会进入子程序
g执行到指定位置
q退出 debug
?查看帮助
n指定文件名。用于读写文件。要配合LW使用。
L加载文件
W写入文件

在这里插入图片描述

r 修改或显示寄存器的值

命 令 ———示 例 说明
rr查看所有寄存器
r 寄存器r ax查看ax寄存器。回车后下一行会出现冒号提示符号。不要输入,直接回车。
r 寄存器
:新值
r ax
:9527
查看ax寄存器。回车后下一行会出现冒号提示符号。输入新值,回车完成修改。ax 的值变为 9527

最下面一行还列出了当前CS:IP指向位置的机器码还显示了对应的汇编指令
在这里插入图片描述

d 查看内存数据

d 查看目录地址内容,可指定开始位置,和查看多少位。(为了方便,我先设置了DS,所以只写偏移地址就够了)

命 令 ————————————示例说明
dd不给参数默认查看 ds:0100ds:017f
d 数据段:偏移d 0100指定查看的开始位置。等同于 d ds:0100。(默认现实128字节)
d 数据段:开始偏移 结束偏移指定查看的开始位和结束位置。

在这里插入图片描述
左:每行起始地址。
中:从指定地址开始的 128 个字节内容。(16进制)
右:每个内存单元中数据对应的ASCII码。(无对应ASCII码的显示 .

e 编辑内存中指定地址的内容

命 令 ——————————————示 例 —————————说明
e 数据段:偏移e ds:0修改ds:0 处的数据。回车后会显示原值,输入后,空格可以继续修改下一个字节。
e 数据段:偏移 数据1 数据2 数据ne 0 8 9 A B C D E Fds:0 开始修改8个字节。

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

u 显示代码

  1. 默认中从代码段的开头开始显示。
  2. 也可以指定显示的开始位置。
  3. 也可以指定显示的开始-结束位置。
命 令 ——————————————示 例 —————————说明
uu显示当前CS:IP所指位置的汇编指令。
u 数据段:偏移u 076E:0000显示 ds=076EH, ip=0000H 处的汇编指令。
u 偏移u 0000简写:段地址从DS取, ip = 0000H 处的汇编指令。
u 开始地址 偏移u 076E:0000 0029显示 076E:0000 到 076E:0029 范围的汇编指令。

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

在这里插入图片描述

t 单步执行一条指令

命 令 ——————————————示 例 —————————说明
tt回车后,单步执行一条指令。
t 条数t 3回车后,一下执行 3 条指令。
t =cs:ip 3t =000:0200 3回车后,从 000:0200位置开始,一下执行 3 条指令。

这没啥好说的,t 回车就行了。

  1. debug调试时,可以先用 a 向目标地址写代码。
  2. 修改 CS:IP 指向目标地址。
  3. 按 t 执行。
    在这里插入图片描述

a 写入汇编指令

输入 a 回车后,就进入输入模式。
每向一条输入一条。
左边是debug自动显示的地址,我们在后面输入的指令回车即可。

命 令 ——————————————示 例 —————————说明
aa回车后,从当前 CS:IP指向位置开始写汇编指令。
a 数据段:偏移a 0740:0100回车后,从 0740:0100 处理开始写汇编指令。

在这里插入图片描述

g 执行到指定位置

命 令 ——————————————示 例 —————————说明
gg回车后,执行到结束。
g 数据段:偏移a 1000:0001回车后,执行到 1000:0001。
g 偏移a 0001上面的简写。段地址从 CS 中取。

在这里插入图片描述

n 指定文件名

该命令可用于在启动程序后将文件加载到DEBUG的内存中,但它的主要功能是在操作系统的控制下创建一个新文件,DEBUG可以向该文件写入数据。
注意:DOS下文件名有长度限制。

L 加载文件

通常,当你想“调试”一个文件时,你会用这样的命令启动debug: C:\WINDOWS>debug test.com。但是也可以通过使用’N’命令,然后使用’L’命令(不带参数),从DEBUG本身将文件加载到DEBUG的内存中,像这样:

C:\>debug
-n jerry.com
-l
-u

在这里插入图片描述

W 保存文件

  1. n 路径\文件名:设置文件名 (不写路径,就是当前目录)
  2. a:在 CS:0100 处开始写汇编指令。
  3. r cx:回车然后写入要保存的字节长度。(我们从 0 开始写的,看最后一行地址就行了)

在这里插入图片描述

2. 实验任务

1. 使用 Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后 CPU 中相关寄存器中内容的变化。

提示,可用 E 命令和 A 命令以两种方式将指令写入内存。注意用 T 命令执行时CS:IP 的指向。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

2. 将下面 3 条指令写入从 2000:0 开始的内存单元中,利用这 3 条指计算 2 的 8次方。

mov ax, 1
add ax, ax
jmp 2000:0003

执行完毕结果 100H = 256

3. 查看内存中的内容

PC 机主板上的 ROM 中写有一个生产日期,在内存 FFF00H~FFFFFH 的某几个单元中请找到这个生产日期并试图改变它。
提示,如果读者对实验的结果感到疑惑,请仔细阅读第 1 章中的 1.15 节。
在这里插入图片描述

  1. 先把 DS 改成 FFF0方便下面查找。
  2. s 0 f "/":在 DS:0DS:F 范围内查找 /。(没找到。第二次扩大范围到 FF
  3. 找到两处。用 d 查看目标位置。

FFF0:00F5 处找到一个 01/01/92 也不知道是不是它。
在这里插入图片描述
e f5 12FFF0:00F5 处内容改为 12,查看了一下没效果。因为这段内存是只读的。

地址 C0000~FFFFF 是只读存储器。

4. 向内存从 B8100H 开始的单元中填写数据

如:-e B810:0000 01 01 02 02 03 03 04 04
请读者先填写不同的数据,观察产生的现象;再改变填写的地址,观察产生的现象。
提示,如果读者对实验的结果感到疑惑,请仔细阅读第 1 章中的 1.15 节。
在这里插入图片描述

地址 A0000~BFFFF 为显存地址空间

参考资料

A Guide to DEBUG
A Guide to DEBUG (Page Two) A DEBUG Tutorial

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/544229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

oa系统是什么?oa系统怎么用?

阅读本文你将了解:1.oa系统是什么;2.oa系统怎么用(oa系统功能模块)3.oa系统作用(案例) 一、oa系统是什么 oa系统全称为Office Automation,即办公自动化系统。它是一种专门为企业和机构的日常办…

Redis和数据库数据不一致该怎么做?

Redis和数据库数据不一致该怎么做? 答: 情景:redis作为缓存,当我们修改数据库的数据的时候,会出现Mysql和redis的数据不一致的问题 如图,当修改更新MYSQL数据为9后,还没来得及取更新redis&am…

linux系列小知识-手把手教你SSH怎么链接

目录 项目场景: 问题描述 原因分析: 解决方案: 项目场景: 应用场景:在机器装机后,如果没有显示,有没有串口,通常很难区操作调试,本文总结一篇通过搭建SSH链接去为调试…

操作符讲解2---C语言

目录 前言: 1.赋值操作符 2.单目操作符 2.1取地址操作符 2.2sizeof操作符 2.3和-- 3.关系操作符 4.条件表达式和逗号表达式 4.1条件表达式 4.2逗号表达式 5.下标引用&函数调用&结构访问 6.表达式与语句的关系 ❤博主CSDN:啊苏要学习 ▶专栏分类…

跨境电商卖家,如何运营Facebook?

随着跨境电商的兴起,越来越多的卖家开始运营Facebook,以吸引更多的潜在客户和提高品牌知名度。那么,作为跨境电商卖家,我们可以在Facebook上做些什么呢? 首先,我们可以通过Facebook建立一个专业的品牌页面&…

测试岗人员转型已是必然选择:我的十年自动化测试经验分享

目录 做测试十多年,有不少人问过我下面问题: 第一阶段:初级测试工程师 第二阶段:中级测试工程师 第三阶段:高级测试工程师/测试组负责人 第四阶段: 测试专家/测试经理 升华阶段(老手后5年—10年) 提…

搞怪独特的520文案表情包分享来啦

1. 你宁愿做狗也不和我表白,这个仇我记下了。 2. 这个夏天我不再是单身狗,请叫我热狗。 3. 我以为520是什么日子呢,特意去查了下史书,520是农历的四月初六潘金莲毒死武大郎的日子。 4. 520 你跟她过吧,我没借到钱&…

经常说的数据仓库,是如何存储数据的

一、 什么是数据仓库? 数据仓库(Data Warehouse),简称DW。数据仓库顾名思义,是⼀个很⼤的数据存储集合,出于企业的分析性报告和决策⽀持⽬的⽽创建,对多样的业务数据进⾏筛选与整合。它能为企业提供⼀定的BI&#xff…

CVPR 2023 | EfficientViT:让ViT在多个部署场景实现实时推理

随着近两年来对视觉Transformer模型(ViT)的深入研究,ViT的表达能力不断提升,并已经在大部分视觉基础任务 (分类,检测,分割等) 上实现了大幅度的性能突破。 然而,很多实际应用场景对模型实时推理…

从零入门激光SLAM(十)——刚体位姿表达与优化

大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激…

django ORM框架 第三章 关联表的数据创建与查询

一、背景: 创建一组一对多的表。 # 班级表 class Class(models.Model):class_id models.IntegerField(primary_keyTrue, verbose_name班级id, help_text班级id)class_name models.CharField(max_length20,verbose_name班级名称, help_text班级名称)# 学生信息表 …

Centos虚拟机与window共享文件夹

1.安装完centos系统后,查看是否安装好VMware tools 如果未安装,请参考此文章安装: CentOS安装VMwareTools_centos安装vmware tools_Sunqk5665的博客-CSDN博客 2.添加共享文件夹 3.使用vmware-hgfsclient查看共享文件夹。本例中为share 4. 挂…

5.1 标准IO介绍及缓冲区

目录 标准I/O介绍 文件的概念和类型 标准I/O-流(可理解为数据) 流的缓冲类型 标准I/O——stdin,stdout,stderr 标准I/O介绍 在寄存器中的输入输出标准,在任何系统上可运行,是一系列的接口,所以被称为标准IO lin…

学会ECharts 数据缩放组件

本文首发自「慕课网」(imooc.com),想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"或慕课网公众号! 作者:范文杰_fe|慕课网讲师 在一个数据图表中,可能由于数据所表…

Mtlab基础(十):极限的求解

在做研究的过程中,需要涉及到极限的求解,面对简单的极限大家都能够轻松解决,但是当面临复杂的问题时,传统的差分进化算法就难以解决了。 对于求解极限,Matlab提供了非常好的工具**limit**,具体的使用方法: limit(f,v,a)-------------------------------------------…

RFID在空调装配中的作用

RFID在空调装配中的作用 随着物联网和射频识别技术 (RFID) 的发展,越来越多的应用开始使用 RFID 技术来提高生产效率和产品质量。在空调装配过程中,RFID 技术可以发挥重要作用。 RFID 技术可以帮助空调制造商提高装配效率。使用 RFID 技术,…

CircuitBreaker Resilience4J 介绍

最近接触到了CircuitBreaker Resilience4J ,网上查了查资料,这里整合记录一下,供大家学习和参考 目录 前言 1、熔断器出现背景 ​​​​​​​ 2、支持断路器实现有以下几种 3、Circuit Breaker原理 4、概念说明 限流 — RateLimiter …

CPU Architecture

CPU Architecture [/ˈɑːrkɪtektʃər/] 指令集架构 (Instruction Set Architecture)精简指令集处理器 RISC (Reduce Instruction Set Computer)复杂指令集处理器 CISC (Complex Instruction Set Computer) CPU按指令集架构分类ARM运行模式非特权模式…

什么是NTFS for Mac?2023新版本如何下载

在NTFS for Mac中包含了多种功能操作,促进软件更好地使用,可以进行全局设置,也可以针对某一各挂载的磁盘进行针对性设置。 本集小编主要向大家介绍它包含的一些基本功能,看看这款mac读写工具能够实现那些功能,全面了解…

安科瑞电能表对于预付费平台的费控策略应用

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘要:基于智能电能表的预付费系统平台可以实现对预付费客户的适时算费、远程费控和服务。预付费系统的费控策略包括算费子策略、催费预警提醒子策略、欠费停电子策略,介绍3个子策略的制定原则、设计流程&…