8086汇编 Debug 使用
Debug是DOS系统中的著名的调试程序,也可以运行在windows系统实模式下。
使用Debug程序,可以查看CPU各种寄存器中的内容、内存的情况,并且在机器指令级跟踪程序的运行。
常用指令:
- 用R命令查看、改变CPU寄存器的内容
- 用D命令查看内存中的内容
- 用E命令改变内存中的内容
- 用U命令将内存中的机器指令翻译成汇编指令
- 用A命令以汇编指令的格式在内存中写入机器指令
- 用T命令执行机器指令
- 用P命令逐条执行指令、显示结果。但遇子程序、中断等时,直接执行,然后显示结果。
- 用G命令从指定地址处开始运行程序,直到遇到断点或者程序正常结束。
使用
一、启动Debug
1、在DOS提示符下输入命令:> debug
二、使用Debug
使用方式一、通过debug执行程序:> debug 程序名称.exe
使用方式二、通过debug直接操作当前内存:> debug
1、用R命令查看、改变CPU寄存器的内容
a、R - 查看寄存器内容
1) -r
b、R 寄存器名 - 改变指定寄存器内容
// 指定要修改的寄存器名、也可写为-r寄存器名 // 格式:-r 寄存器名 1) -r ax // 修改寄存器值、16进制存储 2) :1234
2、用D命令查看内存中的内容
a、D - 列出预设地址内存处的128个字节的内容
1) -d // 073F(段地址):0100(偏移地址) 00(值) ....(ASCLL码) 073F:0100 00 00 00 00 00 00..
b、D 段地址:偏移地址 - 列出内存中指定地址处的内容
// 指定查看内存地址的值 // 格式:-d 段地址:偏移地址 1) -d 2000:0000
c、D 段地址:偏移地址 结尾偏移地址 - 列出内存中指定地址范围内的内容
// 指定查看内存地址、根据偏移量查看范围 // 格式:-d 段地址:偏移地址 偏移量地址 1) -d 2000:0 2f
3、用E命令改变内存中的内容
a、E 段地址:偏移地址 数据1 数据2 ...
// 修改内存地址对应值 // -e 段地址:偏移地址 值 值 值 值 值 、值为16进制 1) -e 2000:0000 12 34 56 AB 3F F3
b、E 段地址:偏移地址
; 逐个询问式修改 ; 空格 - 接受,继续 ; 回车 - 结束
// 修改内存地址对应值 // -e 段地址:偏移地址 1) -e 2000:0000 // 段地址:偏移地址 源值.修改值 源值.修改值 源值.修改值 2) 2000:0000 12.61 34 41 56.62
4、用U命令将内存中的机器指令翻译成汇编指令
a、u 地址 - 查看代码
// 查看内存对应机器码转换为汇编 // 格式:-u 段地址:偏移地址 1) -u 2000:0
b、案例使用
对应的机器码为:
B8 23 01
BB 03 00
89 D8
01 D8
汇编指令:
mov ax, 0123H
mov bx, 0003H
mov ax, bx
add ax, bx
1)通过E命令添加内存机器码
2)查看内存数据
3)通过U查看机器码转换汇编代码
5、用A命令以汇编指令的格式在内存中写入机器指令
a、a 地址 - 写入汇编指令
// 指定内存地址写入汇编指令、073F为CS代码段的寄存器 // 格式:-u 段地址:偏移地址 1)-u 073F:100 // 格式:段地址:偏移地址 汇编指令 2)073F:0100 mov ax, 0123
b、案例使用
有汇编指令:
mov ax, 0123H
mov bx, 0003H
mov ax, bx
add ax, bx
对应的机器码为:
B8 23 01
BB 03 00
89 D8
01 D8
1)A写入汇编语言
2)D查看内存值 对应机器码
3)U查看输入的汇编指令
6、用T命令执行机器指令
注:P、G 与 T 指令类似 根据场景进行操作。
a、t - 执行CS:IP处的指令
// 执行CS:IP 代码 1)-t
b、案例使用
1)r查看当前寄存器情况、当前存储指令为 073F:0100 B82301 MOV AX,0123
2)t执行指令、MOV AX,0123
3)t执行指令 MOV BX,0003
4)t执行指令 MOV AX,BX、验证AX发生变化
7、用Q命令退出Debug
a、q - 退出Debug
// 对出Debug 1)-q