debug命令,进入调试模式 反汇编U命令 程序的结束指令以及地址,因 为下面的汇编指令不属于本程序 程序 程序 机器码的段 的偏移 首址量 汇编指令
图 错误!文档中没有指定样式的文字。-6 DEBUG的U命令
不带参数的U命令,从当前CS∶IP所指处开始,或者紧接着上次反汇编结束地址处开
始反汇编, 长度为32字节,显示在屏幕上。U命令的显示分为3部分:程序所占的存储地址、机器码及汇编指令。带参数的U命令可以从参数指定的地址处反汇编。
3. R命令
经过上一步反汇编明确了程序在内存中的位置和结束指令位置后,可以开始准备执行,但在执行之前,我们有必要查看一下原来寄存器和内存相关单元内容,从而可以在执行后对比相关单元内容是否正确装载或改变。
利用R命令可显示8086/8088各寄存器的内容和下一条将要执行的指令,如图 错误!文档中没有指定样式的文字。-7所示。各段寄存器的内容与存储器的实际使用情形有关。
DEBUG采用显示标志状态符号的方法反映标志值,每一个标志的状态分别用两个字母表示,表示8个标志状态的符号列于表 错误!文档中没有指定样式的文字。-2。
R命令查看各寄存器内容 即将执行的下一条指令内存地址、机器码及汇编指令 各标志状态 跟踪执行命令T DS寄存器已正确设置
图 错误!文档中没有指定样式的文字。-7 DEBUG的R、T命令
表 错误!文档中没有指定样式的文字。-2 DEBUG中标志状态的符号表示
标志名称 溢出 OF 方向 DF 中断 IF 符号 SF 零 ZF 辅助进位 AF 奇偶 PF 进位 CF 置位状态 复位状态 OV NV DN UP EI DI NG PL ZR NZ AC NA PE PO CY NC R命令不仅能显示各寄存器内容, 还可修改各通用寄存器和段寄存器内容, 还包括指令指针IP和标志寄存器。
4. 跟踪执行命令T 查看完寄存器值情况后,我们首先执行两条T命令,正确设置好DS寄存器值。如图 错误!文档中没有指定样式的文字。-7所示,两条T命令分别完成以下两条指令的跟踪执行。
MOV AX,DSEG
MOV DS,AX ; 设置数据段段地址
可以看到汇编后的指令,直接用数据段地址147EH代替DSEG。MOV指令为数据传送指令,是程序中使用最多的一条指令。其汇编指令格式为:
MOV dst,src ;dst←(src),将源操作数src传送至目的操作数dest。
因此,前两条指令执行完后,我们可以看到(DS) = (AX) = 147EH,正确完成了数据段段地址的设置。
利用跟踪执行命令T可跟踪执行一条或多条指令。T命令可指定起始执行地址,地址参数以等号引导,如地址参数中无段地址,那么就以CS为段地址。必须注意, 起始地址处必须是可执行指令。如果无起始地址, 那么跟踪执行从CS∶IP所指处开始。如果不指定跟踪执行指令的条数,那么就跟踪执行一条指令。T命令会跟踪进入DOS功能调用程序。请注意, 一般情况下不要进入DOS功能调用程序和BIOS程序。
5. 显示内存单元命令D
正确设置好DS寄存器值后,我们先来查看一下数据段的初始内容,即定义的变量的存储分配情况。利用命令D查看数据段的内容(段地址须根据实际装入的地址而定,在上一步操作中已正确装入),如图 错误!文档中没有指定样式的文字。-8所示,显示内容左边是内存单元的逻辑地址栏,中间部分是字节值(16进制),右边是把字节值作为ASCII 码所对应的符号, 对于非ASCII 码,或者非显示符号,用点或者空格表示。从图中我们可以看到例 错误!文档中没有指定样式的文字。-1定义的字符串在内存中的存储情况。
如果之前没有执行T命令装载好DS值,则D命令所跟参数段地址应直接给出4位16进制数值,不能用DS给段地址。
显示内存单元D命令
执行命令G命令
图 错误!文档中没有指定样式的文字。-8 DEBUG的D、G命令
6. 执行命令G
观察完数据段情况后,下面我们用断点执行命令G连续运行多条指令。如图 错误!文
档中没有指定样式的文字。-8所示,这一步我们指定断点为偏移地址000AH的指令“INT 21H”(指令在内存中的存储位置我们在调试模式第2步U命令查看得到,参见图 错误!文档中没有指定样式的文字。-6),G命令控制从当前CS∶IP处开始执行指令, 直到断点位置000AH暂停。当然,你也可以指定其它断点位置。
利用执行命令G可以设置断点执行被调试程序。没有指定开始地址的G命令从当前CS∶IP处开始执行,直到遇断点或程序正常终止而结束。
7. 执行过程命令P
下面我们即将要执行的指令是偏移地址000AH单元的指令“INT 21H”。注意,此时最好不要用T命令,可以用P命令。
执行P命令
执行P命令
图 错误!文档中没有指定样式的文字。-9 DEBUG的P命令
如图 错误!文档中没有指定样式的文字。-9所示,首先用P命令执行指令“INT 21H”,此时,例 错误!文档中没有指定样式的文字。-1源程序只剩最后两条指令没有执行了。最后,依次执行T命令和P命令,将程序执行结束。请注意第一个P命令在执行DOS功能调用后所显示的信息“Hello,Assembly!”。第二个P命令调用DOS的4CH号功能,终止程序执行, 所以DEBUG显示提示信息“Program terminated normally”而报告被调试程序执行完。
利用执行过程命令P可步进执行一条或多条指令。P命令与T命令类似,但不会由于子程序调用或软中断调用而跟踪进入被调用程序。P命令是步进跟踪, 所以也能一次执行完LOOP指令, 或者一次执行完重复的串操作指令。
因此,本例中执行中断指令INT时用P命令,没有用T命令,一般情况下不要进入DOS功能调用程序和BIOS程序。
8. 退出DEBUG 为了退出DEBUG, 只需在DEBUG提示符下输入退出命令Q即可。在发出Q命令后, DEBUG终止,控制将转回到DOS命令行。请注意,Q命令不保存正在被调试的文件,为保存被调试的内容必须使用其他的DEBUG命令。
至此,例 错误!文档中没有指定样式的文字。-1调试过程结束。建议读者在后续的学习中多使用DEBUG辅助学习汇编指令及汇编程序设计,熟练掌握表 错误!文档中没有指定样式的文字。-1所列的一些常用DEBUG调试命令,这将会使学习汇编语言有更直观的体验和更深刻的理解。
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新教学研究汇编语言程序上机调试 (2)全文阅读和word下载服务。
相关推荐: