Debug的使用
我们用到的Debug功能
Debug的命令 | 作用 |
---|---|
R命令 | 查看、改变CPU寄存器的内容 |
E命令 | 改写内存中的内容 |
D命令 | 查看内存中的内容 |
U命令 | 将内存中的机器指令翻译为汇编指令 |
T命令 | 执行一条机器指令 |
A命令 | 以汇编指令的格式在内存中写入一条机器指令 |
显示“Hello World”字符串的代码块
以这段代码为例
DATAS SEGMENT
STRING DB 'Hello World!',13,10,'$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA DX,STRING
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
使用R指令查看、改变CPU寄存器的内容
CS=0771,IP=0000
说明内存0771:0000处的指令为CPU当前要读取、执行的代码。后面的 B8 70 07
是这个内存处存储的机器码,对应的汇编指令为MOV AX,0770
还可以用R命令来改变寄存器中的内容
若想要修改一个寄存器中的值,比如AX中的值,可以用R命令后加寄存器名来进行,输入“r ax”后按enter键,会出现“:”作为输入提示,在后面输入要写入的数据后按enter键,就完成了对AX中内容的修改。
使用D命令查看内存中的内容
如果我们想知道内存10000H处的内容,可以用“d 段地址:偏移地址”的格式来查看Debug将输出3部分内容
1.中间是从指定地址开始的128个内存单元的内容,用16进制的格式输出。
2.左边是每行的起始地址。
3.右边是每个内存单元中的数据对应的可显示的ASCII码字符
用E命令改写内存中的内容
可以用“e 起始地址 数据 数据 数据 …”的格式来进行
用E命令向内存中写入机器码,用U命令查看内存中机器码的含义,用T命令执行内存中的机器码
我们要从内存1000:0单元开始写入一段机器码:
b80100 mov ax,0001
b90200 mov cx,0002
01c8 add ax,cx
使用U命令将从1000:0开始的内存单元中的内容翻译为汇编指令,并显示出来
使用T命令可以执行一条或多条指令
首先使用r指令将cs:ip定向到1000:0处,然后就可以使用t指令执行我们预先写入的机器码对应的汇编语言代码
使用A指令以汇编指令的形式在内存中写入机器指令
直接使用a指令,会从一个预设的地址开始输入指令