R命令查看,改变CPU寄存器的内容

查看

直接键入-r

所有寄存器下方,Debug还列出了CS:IP所指向的内存单元,及在其中存放的机器码,并将它翻译成汇编指令

改变寄存器内容

例如,键入-r ax

也可用R命令修改CS,IP 寄存器中的内容

D命令查看内存中内容

若想知道内存10000H处内容,可以用d 段地址:偏移地址格式查看, -d 1000:0

使用D命令,Debug将输出3部分内容

  • 左边是每行起始地址
  • 中间是从指定地址开始的128个内存单元的内容,以十六进制的格式输出
  • 右边是每个内存单元中数据对应的可显示的ASCII码字符 例如 72H对应“r”,0AH没有对应的字符,就用“.”代替

在使用d 段地址:偏移地址后,接着使用D命令,可列出后续内容

也可以指定D命令查看范围 如要查看1000:0~1000:9中的内容,可以用d 1000:0 9 实现

E命令改写内存中内容

例如,要将内存1000:0~1000:9单元中内容改写成0,1,2,3,4。。。 可以用 e 起始地址 数据 数据。。。 格式进行: -e 1000:0 0,1,2,3,4,5,6,7,8,9

也可用提问的方式修改内容 例如 -e 1000:10

可以用e命令向内存中写入字符 -e 1000:0 ‘a’,’b’,’c’

可以用e命令向内容中写入字符串

U命令将内存中机器指令翻译成汇编指令

用U命令将从1000:0 开始的内存单元中的内容翻译为汇编指令,并显示出来
-u 1000:0

T命令执行一条机器指令

使用Debug的T命令可以执行一条或多条指令,简单使用T命令,可以执行CS:IP 指向的指令

A命令以汇编指令格式在内存中写入一条机器指令

使用A命令,以汇编语言向从1000:0开始的内存单元中写入几条指令
-a 1000:0
可简单实用A命令,从一个预设的地址开始输入指令

g命令实现跳转

例如 g 0016 直接使程序执行到 CS:0016

p命令终止循环

  • 当执行int 21H时,使用p命令退出
  • 在debug中处于loop循环时,使用p命令,debug自动重复执行loop语句直到(cx) = 0

debug和汇编编译器masm对指令的不同处理

mov ax,[0]

  • debug 中,表示将ds:0处数据送入ax中
  • 在汇编源程序中,表示mov ax,0

解决办法:

  • mov ax,2000H

mov ds,ax
mov bx,0
mov al,[bx] ;将ds:bx单元中的数据送入al

  • mov ax,2000h

mov ds,ax
mov al,ds:[0] ; 显式给出段地址所在的段寄存器