计算机组成原理与汇编语言实验指导书
★ Q命令
格式:Q
功能:退出DEBUG返回DOS。 参数说明:无参数。 Q命令使用 -Q
执行该命令后,结束DEBUG,返回DOS
★ R命令
格式:R[寄存器]
功能:1. 显示单个寄存器的内容,并提供修改功能。2. 显示所有寄存器内容, 再加上字母标志位状态以及要执行的下一条指令。3. 显示8个标志位状态, 并提供修改功能。
参数说明:[寄存器]指定要显示其内容的寄存器名。
R命令使用
说明:可以使用的寄存器名有:AX、BX、CX、DX、SP、BP、SI、DI、DS、ES、SS、CS、IP、PC 及F。键入R命令不跟任何可用的寄存器名,则将显示所有的寄存器的内容以及CS:IP指向的存储单元中的内容;若键入R命令指定了寄存器名称,将以十六进制数形式显示该寄存器中的内容,下一行显示冒号提示符,在冒号提示符后面可以为寄存器键入新的数据。若不需要修改寄存器的数据,直接按 ENTER 键返回 Debug 提示符。如果键入 f 字符代替寄存器名,Debug 将每个标记的当前设置显示为两字母代码,然后显示 Debug提示符。要更改标志的设置,请从下表中键入适当的两字母代码;若不需要修改,直接ENTER 键返回 Debug 提示符。可以修改全部或部分标志位,可以按任何顺序键入新的标志值。不需要在这些值之间留出空格。任何没有指定新值的标志保持不变。在DEBUG下,标志位表示如下: 标志名 标志为1 标志为0 OF DF IF SF ZF AF PF CF
OV DN EI NG ZR AC PE CY
NV UP DI PL NZ NA PO NC
注意:若输入的寄存器名不在上面的有效寄存器名之内,将显示: bf error
R命令后只能跟一个有效的寄存器名。修改标志位如果指定没有在前面的表中列出的标志代码,将显示: bf error
若为一个标志位指定了多个值,Debug 将显示以下消息:
- 0 -
计算机组成原理与汇编语言实验指导书
df error
要只查看标志的状态,键入以下命令: -R F
将按如下格式显示:
NV UP DI NG NZ AC PE NC - _
此时可以按任意顺序键入一个或多个有效的标志值,其中可以有或没有空格,如下所示:
NV UP DI NG NZ AC PE NC –PLEICY
执行指令后,将使用新的标志位数值代替旧值。
要查看当前所有寄存器的取值、所有标志位的内容和CS:IP指向的内存单元指令,键入以下命令: -R
如果当前位置是 CS:1692,显示外观将类似于以下内容:
AX=0000 BX=0000 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0AF6 ES=0AF6 SS=0AF6 CS=0AF6 IP=1692 NV UP EI PL NZ AC PO NC 0AF6:1692 BA2601 MOV AX,0126 从键盘上键入如下命令: -R CX
执行后,将显示: CX 0000 :
在冒号后可以位CX键入新值,若不需要改变,直接按ENTER。
★ S命令
格式:S[地址范围] [字符串]
功能:在指定的地址范围内查找给定的字符串。
参数说明:[地址范围] 指定要搜索范围的开始和结束地址。[字符串] 指定要搜索的字节值或字符串。字符串应包括在引号中。 S命令使用
说明: 若在给定的分为内要搜索字节出现多次,将显示出所有地址。隐含地址为DS段值。
假定从范围DS:100 到 DS:110查找是否包含 61,键入下面命令: -S 100 110 61
执行程序后,显示: 0AF6:010A 0AF6:010F -
若要在范围CS:100 到 CS:200内搜索字符串“wangxiao”,键入下面的命令: -S CS:100 CS:200 ?wangxiao‘
- 1 -
计算机组成原理与汇编语言实验指导书
★ T命令
格式:T[=地址] [指令条数]
功能: 逐条跟踪程序的执行,每条指令执行后都将显示各寄存器的内容。
参数说明:[=地址] 指定第一 条要执行指令的位置。如果不指定地址,则默认地址是在 CS:IP 寄存器中指定的当前地址,[指令条数] 指定在将控制返回给 Debug 之前要执行的指令数,默认值为 1。 T命令使用
说明: 通常采用跟踪一条指令,但用户也可以用指令条数设定一次跟踪多条指令,每执行一条指令之后,显示所有寄存器的内容和标志状态以及下一条指令在内存中的保存情况。T命令若不跟[=地址]参数,则从当前CS:IP处开始执行,第一次键入的T命令从CS:100处开始执行程序。T命令默认段寄存器是是CS。参考P命令。 键入下面得到命令: -T
若是第一次执行,则显示:
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0AF6 ES=0AF6 SS=0AF6 CS=0AF6 IP=0103 NV UP EI PL NZ AC PO NC 0AF6:0103 BA2601 MOV AX,0126
若要从CS:200处开始执行程序,则键入下面的命令: T=CS:200
★ U命令
格式:U[起始地址]或者[地址范围]
功能:将内存中的内容转换为汇编语句。
参数说明:[起始地址]或者[地址范围]指定要反汇编代码的起始地址和结束地址,或起始地址和长度。 U命令使用
说明:U命令中如果没有使用参数,第一次使用,则U命令从CS:IP开始对20h个字节内容进行反汇编;若不是第一次使用,则从前面U命令所显示地址后的第一个地址开始开始对20h个字节内容进行反汇编。
若要从CS:100开始反汇编 8 (10h) 字节,键入下面命令: -U CS:100 108
程序执行后,显示下面的结果: OAF6:01OO OAF6:01O3 OAF6:01O8 -
★ W命令
格式:W[地址] [盘符:] [起始扇区] [扇区数] 功能:将内存中的数据写入磁盘中。
- 2 -
21725F C606E3991A C3
AND [BP+SI+5F],SI
MOV BYTE PTR [99E3],1A RET
计算机组成原理与汇编语言实验指导书
参数说明:[地址]指定要写到磁盘文件的文件或部分文件的起始内存地址。如果不指定 address,Debug 程序将从 CS:100 开始。[盘符:] 指定包含目标盘的驱动器。该值是数值型:0 = A, 1 = B, 2 = C,等等。[起始扇区] 指定要写入第一个扇区的十六进制数。[扇区数] 指定要写入的扇区数。 W命令使用
说明: 在使用不带参数的W命令之前,BX和CX中应包含要写入文件的字节数,BX为高位,CX为低位,写入的文件为最近N命令命名的文件。不能用W命令写入 .exe 或 .hex 文件。 从键盘键入下面的命令: -N ABC.DAT -W
则执行上面的命令后,把当前CS:100指向的内存开始的数据写入到ABC.DAT文件中,写入字节大小有BX和CX中大小规定。
假定要将起始地址为 DS:200 的内存内容写入到驱动器A的磁盘中。需要将数据从磁盘的逻辑扇区号 10H 开始并持续10H个扇区。则键入下面命令: -W DS:200 0 10 10
★ XA命令
格式:XA[页面数]
功能:分配扩展内存的指定页面数
参数说明:[页面数] 指定要分配的扩展内存的 16KB 页数。 XA命令使用
说明:要使用扩展内存,必须安装符合 4.0 版的 Lotus/Intel/Microsoft 扩展内存规范 (LIM EMS) 的扩展内存设备驱动程序。如果指定的页面数可用,则将显示消息表明所创建的句柄的十六进制数;否则显示相关的错误消息。 要分配扩展内存的8个页面,键入下面命令: -XA 8
执行指令后,若执行成功,显示下面消息: Handle created=0003 若失败,则可能显示: EMS not installed -
★ XD命令
格式:XD [释放的句柄]
功能:释放指向扩展内存的句柄。
参数说明:[释放的句柄] 指定要释放的句柄。 XD命令使用
说明:见XA命令说明
若要释放句柄 0003,键入下面命令:
- 3 -
计算机组成原理与汇编语言实验指导书
-XD 0003
执行指令后,若执行成功,显示下面消息: Handle 0003 deallocated 若失败,则可能显示: EMS not installed -
★ XS命令使用 说明:见XA命令说明
★ XM命令
格式:XM [要映射扩展内存的逻辑页面号] [映射到的物理页面号] [句柄] 功能:将属于指定句柄的扩展内存逻辑页映射到扩展内存的物理页。
参数说明:[要映射扩展内存的逻辑页面号]指定要映射到物理页的扩展内存的逻辑页面号。[映射到的物理页面号]指定将映射到的物理页面号。 [句柄]指定句柄。 XM命令使用
说明:见XA命令说明
若要将句柄 0003 的逻辑页3映射到物理页4,键入下面命令: -XM 3 4 0003
执行指令后,若执行成功,显示下面消息: Logical page 03 mapped to physical page 04
★ XS命令 格式:XS
功能:显示有关扩展内存状态的信息。 参数说明:无参数
三、DEBUG的有关说明 (1)在DEBUG状态下,所有输入的数值都不能带有后缀区分进制,输入的数值都为16进制数;
(2)命令可大写或小写,DEBUG命令对大小不敏感;
(3)可以用
(5)按
(6)在DEBUG状态下面,输入?可以得到所有DEBUG命令的使用说明; 四、例题讲解
1. 在汇编中若想对某一程序进行调试,可以使用debug进行单步T命令跟踪,但
当遇到调用int 21H中断输入指令时,如何进行输入以便继续跟踪调试程序? 解:遇到int 21h之类,用p即可完成中断的功能而不进入中断内部。单步调试多用p, 除非你对某个子程感到怀疑或有兴趣了, 才用t命令进去看看, 对int类的
- 0 -