debug常用命令
参考教程
https://blog.csdn.net/happylzs2008/article/details/113825836
挂载硬盘
mount c: d:/masm
c:
dir
生成可执行文件
masm sample.asm ; 后缀名可省略
link sample.obj
sample.exe
r 查看和修改寄存器
查看:最后一行是下一条要执行的命令
修改寄存器内容r 要修改的寄存器
, r ax
--修改ax的内容
a 输入汇编指令
a 偏移地址
,修改命令,两次回车退出,默认为代码段
或者直接a 偏移地址 新命令
,两次回车退出
a 100
--从代码段的偏移100H处输入指令
a 0100:0010
--从0100段的0010偏移处输入指令
a19ee:0029 db 'backward.'
:从ds:19ee
开始执行db
指令,修改内存
u 查看汇编指令
-
命令用法
u 100
--从代码段的偏移100H处查看指令u 0100:0010
--从0100段的0010偏移处查看指令开始输入
u
默认从cs:0000
开始查看,显示若干行。再次输入u
时显示接下来的地址存的指令 -
显示的内容的格式:
段地址:偏移地址 机器指令 汇编指令操作码 汇编指令操作数
所有的二进制串都是用16进制表示的
d 显示数据段内容
-
命令用法
d 100
--查看数据段的偏移100H处的数据d 0100:0010
--查看0100段的0010偏移处的数据 -
显示的内容格式
段地址:偏移地址 8字节的数据-8字节的数据(16进制表示) 每个字节的内容
字节的内容和16进制表示是一一对应的。如果一个字节的内容可读,则将字符显示出来,否则显示为
.
每一行显示16字节的数据,下一行显示接下来的16字节的数据。
比如第一行就是
0000~000F
。0000:4D,0001:6F,...,0007:65,0008:20,0009:63,...,000F:20
e 修改内存
e29
:从数据段(默认)的偏移地址0029H开始修改
-
逐个字节修改,按空格修改下一个字节,结束修改按回车。注意这里有两行是按空格出来的,不是回车,回车就直接结束了!
-
输入修改的内容
e29 'forward'20
f 修改内存
F
命令作用:使用指定的值填充指定内存区域中的地址。
F
命令的使用方式为:F [范围] [填充列表]
输入以下命令:F 1AF5:100 L20 1 2 3 4 5
执行命令D 1AF5:100
观看命令执行结果。
说明:该命令是用字节序列01、02、03、04、05轮流填充从1AF5:100
开始长度为20H
的内存区域。
F 1AF5:100 13F 41 42 43 44
说明:该命令是用字节序列41、42、43、44轮流填充从1AF5:100
开始一直到1AF5:13F
的内存区域。
g 运行程序
g偏移地址
:执行到断点处,断点这一行不执行
t 单步调试
t
--执行当前所存放地址处的指令
t 100
--执行100条指令
注意:cs存放的是代码指令的段地址(即首条指令的地址),ip存放的是下一条要执行的指令的偏移。
t
命令相当于第三个step in功能,会默认从cs:ip
开始一步步执行指令,遇到子程序,也会进入里面一步步执行再返回。
用法:t [=地址] [指令数]
,地址前要加等号且默认是cs:ip
,不加等号的数字被认为是指令数,指令数默认是1
上图中最后一行是下一条要执行的指令
p 单步执行
p
命令相当于第二个step over功能,大多数情况与t
一样,只有当遇到call调用子程序的时候,p
命令直接执行完这个程序,而t
命令会进入里面一步步执行。