汇编语言:Debug的使用
目录 4.用E命令向内存中写入机器码,用U命令查看内存中机器码的含义,用T命令执行内存中的机器码 |
实验1什么是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命令以汇编指令的形式在内存中写入一条机器指令
|
1.用Debug的R命令查看、改变CPU寄存器的内容
查看
改变
|
2.用Debug的D命令查看内存中的内容
(1)想知道内存10000H处的内容,可以用“d 段地址:偏移地址”(d 1000:0)的格式来查看
使用“d 段地址:偏移地址”的格式来查看,Debug将列出从指定内存单元开始的128个内存单元的内容
使用D命令,Debug将输出3部分内容: 1)中间是从指定地址开始的128个内存单元的内容,用16进制的格式输出,每行的输出从16的整数倍的地址开始,最多输出16个单元的内容。注意在每行的中间有一个“-”,它将每行的输出分为两部分,这样便于查看。 2)左边是每行的起始地址。 3)右边是每个内存单元中的数据对应的可显示的ASCII码字符。若没有对应可显示的ASCII字符,Debug就用“.”来代替。
(2)若输入的地址不是16的倍数,则输出效果是这样的
(3)在一进入Debug后,用D命令直接查看,将列出Debug预设的地址处的内容
(4)在使用“d 段地址:偏移地址”之后,接着使用D命令,可列出后续的内容
(5)也可以指定D命令的查看范围,此时采用“d 段地址:起始偏移地址 结尾偏移地址”的格式
(6)查看某一个内存单元的地址(如10000H) 10000H 1000:0 10000H 0fff:10 10000H 0100:f000 每一个段地址都可以表示10000H
|
3.用Debug的E命令改写内存中的内容(1)将内存1000:0~1000:9单元中的内容分别写为0、1、2、3....、9,可以用“e 起始地址 数据 数据 数据 ……”的格式来进行
(2)用E命令以提问的方式来逐个地修改从某一地址开始的内存单元中的内容 红色部分为用户输入的修改的数据,到了某一内存单元的时候,可以选择修改(输入要修改的数值),也可以选择不修改(直接按空格),处理完一个内存单元之后,按空格,继续处理下一个内存单元;全部都处理完毕之后,按enter
(3)可以用E命令向内存中写入字符
(4)也可以用E命令向内存中写入字符串
|
4.用E命令向内存中写入机器码,用U命令查看内存中机器码的含义,用T命令执行内存中的机器码
机器码 对应的汇编指令 b80100 mov ax,0001 b90200 mov cx,0002 01c8 add ax,cx
用E命令向从1000:0开始的内存单元中写入了8个字节的机器码 用D命令查看内存1000:0~1000:1f中的数据(从数据的角度看一下写入的内容) 用U命令查看从1000:0开始的内存单元中的机器指令和他们所对应的汇编指令
修改cs、ip的值
使用T命令可以执行一条或多条指令 |
5.用Debug的A命令以汇编指令的形式在内存中写入机器指令
简单地用A命令,从一个预设的地址开始输入命令 |
实验2补充: 1)Debug在执行“d 1000:0”这样的命令时,会先将1000H送入段寄存器(ds)中 2)可以用段寄存器表示内存单元的段地址 3)Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧跟着被执行。
查看从1000::0开始的内存空间的内容
查看1000:10~1000:18中的内容
查看当前代码段中的指令代码(不能直接写cs:ip)
查看当前栈段中的内容
在从1000:0开始的内存区间中写入数据
以汇编的形式,显示当前代码段中的代码,0代码的偏移地址
以汇编的形式,向从1000:0开始的内存单元中写入指令
|