目录
前言
最近学了王爽教授写的《汇编语言》,整理一下学习笔记。
一、Debug模式
Debug是DOS、Windows都提供的实时模式(8086 方式)程序的调试工具。使用它,可以查看CPU各种寄存器的内容、内存的情况和在机器码级跟踪程序的运行。
Debug功能
(1)用Debug的
R
命令
查看、改变CPU寄存器的内容
;
(2)用Debug的
D
命令
查看内存中的内容
;
(3)用Debug的
E
命令
改写内存中的内容
;
(4)用Debug的
U
命令
将内存中的机器指令翻译成汇编指令
;
(5)用Debug的
T
命令
执行一条机器指令
;
(6)用Debug的
A
命令
以汇编指令的格式在内存中写入一条机器指令
。
Windows 32
位系统可以直接从
DOS方式
下进入
Debug
但
Windows 64
位系统已经不再支持命令行模式下进入
Debug
了,想要进入Debug模式,需安装
DOSBox
和
debug.exe
来进入Debug模式。
二、下载安装DOSBox和debug.exe
通过下面的链接即可下载:
链接:
https://pan.baidu.com/s/1eMB0ddYycOdF42QmoXhJOQ?pwd=DDOS
提取码:DDOS
在这里我将DOSBox 默认安装在 C:\Program Files (86X) 目录下。将debug.exe 放在D盘的Debug目录下;
打开后是这样的界面,有两个窗口,两个窗口必须同时打开,不能关闭任意一个!
我们可以看到
Z:>
,这是DOSBox的虚拟盘符
然后依次输入下面的命令
mount D D:\Debug
D:
debug
这样就可以进入Debug模式了(其中D盘是在DOSBox中创建的
虚拟D盘
,并不是本地的D盘)
三、实战
用R命令修改寄存器中的内容
以寄存器
ax
为例
按
Enter
键,
R
命令操作结束。
用D命令查看内存中的内容
以内存
10000H
处的内容为例,用“
d 段地址:偏移地址
”的格式来查看
图中
左边
,是每行的
起始地址
。
中间
,是指定地址开始的
128个单元的内容
,用16进制的格式输出,每行输出从16的整数倍的地址开始,最多输出16个单元的内容。
右边
,是每个单元中的数据
对应的ASCII码字符
,当数据没有对应的ASCII字符时,Debug就会用 “
.
” 代替。
若查看指定内存处的内容,可以用“
d 段地址:起始偏移地址 结尾偏移地址
”的格式来查看。
按
Enter
键,
D
命令操作结束。
用E命令改写内存中的内容
以内存
1000:0-1000:9
单元为例,将其中的内容改为0、1、2······7、8、9,可以用“
e 起始地址 数据 数据 数据······
”的格式来进行。
同时,还可以用e命令以提问的方式来逐个的修改从某一地址开始的内存单元内容
按
Enter
键,结束
E
命令。
向内存中存入机器码
要知道,机器码也是数据,当然可以
用e命令将机器码写入内存
,比如写下面的指令:
可以用e命令这样写:
用U命令将内存中的机器指令翻译成汇编指令
类比上面的命令,u命令运用如下:
从左到右依次是:
每一条机器指令的地址
,
机器指令
,
机器指令所对应的汇编指令
。
按
Enter
键,结束
U
命令。
用T命令执行一条或多条指令
图中标红线的地方就是下一步要进行的指令,用
t命令
即可立刻执行。
按
Enter
键,结束
T
命令。
用A命令以汇编指令的形式在内存中写入机器指令
通过上面的练习我们发现用E命令写入机器指令很麻烦,所以我们可以用A命令直接写入汇编指令:
按
Enter
键,结束
A
命令。
总结
以上为本人学习汇编语言时的摘录总结,主要内容来源于
汇编语言(第四版) 王爽 著
,大家若是感兴趣可以看看原书,很值得推荐,以上内容如果有什么错误的话,还请大家指正!