4)T(Trace)执行一条语句
格式: -t [=地址] 从指定[地址]起执行一条语句后停下来,显示所有寄存器内容及标志位的值与下一条指令。如[地址]缺省则从当前CS:IP开始执行
-t [=地址][value] 从指定地址起执行value条指令后停止。
5)P(proceed)执行一个循环;一个软中断或call子过程
格式:-p [=地址][n]
示例: mov ah,02h
mov dl,41h
int 21h
此时用: -p 回车后系统将显示一个字符A,如果在这不用P,而改用T,那么系统将进入INT 21H的中断调用中,出不来,这时你会误以为你的程序编错了,一定注意!!
6)R(register)显示并可修改寄存器内容
格式:-r 显示所有寄存器内容
-r 寄存器名 修改指定寄存器内容(可改:AX,BX,CX,DX,SP,
BP,SI,DI,CS,DS,ES,SS,PC,IP,F)
7)U(Unassemble)反汇编
格式:-u [地址] 从指定[地址]反汇编32个字节,若[地址]缺省则从当前地址汇编32个字节。
-u 地址范围 对指定范围内的存储单元进行反汇编
以上是在调试程序中可能用到的DEBUG命令解释,DEBUG中还有其它命令,在检查程序中不会用到,就不再介绍了。
PROCEDURE g:程序编好,那就一切OK!!!交卷过关了!大吃、大睡。
下面给出一个有病句的程序,希望大家和我一起调试、修改并通过:
先执行PROCEDURE a编辑源程序
实现功能:在屏幕上显示:Hello world
My name is DJX
文件名:error.asm
行号: 源程序代码:
1 data segment
2 out1 db ''Hello world''
3 ax db ''My name is DJX''
4 data ens
5
6 code segment
7 assume cs:code;ds:data
8 lea dx,out1
9 mov ah,2
10 int 21h
11
12 mov dl,0ah
13 mov ah,2
14 int 21h
15 mov dl,0dh
16 moo ah,2
17 int 21h
18
19 lea dx,ax
20 mov ah,
21 int 21h
22 code ends
在编辑完执行PROCEDURE b用masm进行编译:masm error回车后显示如下:
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.
Object filename [error.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
End of file encountered on input file
error.ASM(23): warning A4085: End of file, no END directive
Open segments: DATA
error.ASM(3): warning A4016: Reserved word used as symbol: AX
error.ASM(4): error A2105: Expected: instruction or directive
error.ASM(16): error A2105: Expected: instruction or directive
error.ASM(19): error A2049: Illegal use of register
End of file encountered on input file
error.ASM(23): warning A4085: End of file, no END directive
51566 + 406450 Bytes symbol space free
2 Warning Errors
4 Severe Errors
说明这个程序有错误,并在第3,4,16,19,23行有错,
我们再执行PROCEDURE c去逐一检查
第三行:3 ax db ''My name is DJX''
它的错误在于AX不能作为变量名,更正:
3 out2 db ''My name is DJX''
注意刚才我们定义AX为变量时在后面的程序中用过''变量AX''在第19行
19 lea dx,ax
在出错报告中也报第19行错,因为不能将AX的有效地址赋给DX,更正:
19 lea dx,out2
这样一下就解决了两个错误
第四行:4 data ens
这行为一个段的结束,但语句漏打了字母,更正:
4 data ends
第十六行:16 moo ah,2
这行也是语句打错,更正:
16 mov ah,2
第二十三行:
出错信息:error.ASM(23): warning A4085: End of file, no END directive
说明本程序没有结束伪操作,更正:
加入:在第七、八行加入地址标志: start:
原23 end start
执行PROCEDURE a将源程序修改如下:
data segmen