汇编| 8086 DEBUG学习笔记
DEBUG是8086汇编中一个非常实用的工具,它可以清晰的查看每一步指令的相对状态,有利于学习。下面是一些使用DEBUG的方法:
-A:你可以在相应的位置开始写代码,在代码中可以跟一个地址来表示写的位置;从下图可以看出,参数2000加在A之后,即从段偏移量2000的位置开始存储代码。
-C:
-c [add1]L[length] [add2]是显示和比较从add1和add2开始的长度数据;
键入下图:-C 50L20 100第二列显示0050-006F的数据内容,第三列显示0010-011F的数据内容,长度为20。数据显示非常直观。
-D:显示存储空间的内容。
?
如上图,0200原来是空的。通过A命令将其写入代码后,可以发现其中存储了一个新的操作代码。
此外,您还可以通过指示显式段和偏移量来直接查询特定位置的内容。(如CS:200)
-E:修改特定存储空间中的内容
-E 100
073F:0100 B8.12
您也可以通过连续输入来更改连续的内容:
-F:它用于填充一段存储单元,但要注意它的格式,并清楚地写下段地址和段偏移量。
如下图所示,L10表示填充长度为10,后跟填充内容。通过两个命令可以发现,如果我只写\(n\)个填充内容,写\(m\)个填充长度(\(nm\)),就会自动按顺序循环填充。
-G:不当使用此命令将导致系统崩溃。使用方法是:G[=address],意思是从当前\ (CS3360IP \)?指示的位置被执行以寻址。
技巧:首先用-U检查一些指令,然后用-G快速执行。
-H:这个选项比较简单,就是输入两个参数,加减这两个参数,把要加的结果显示在第一列,把减法的结果放在第二列,其中我们可以看到,当它减为负数的时候,是以补码的形式表示的。
-I:输入并显示某个端口的一个字节,后跟端口号。
-L:我发现L命令不能用了。我查阅了数据。在dos下运行调试时,禁止所有涉及直接写入硬盘扇区的操作。这是窗户的保护功能。如果你想运行所有的调试命令,你必须在真实模式下运行它们。
-M:将\(cs\)的一部分移动到内存单元,默认情况下,内存单元是指\(DS\)部分。
-N:曾经给文件命名。-n[姓名]。
-O:过去常常向港口发送数据,
;将数据4F发送到2F8端口
O-2 F8 4F
-Q:使用q命令退出调试。
-R: R命令是一个非常方便的命令,可以查看和修改8086中寄存器的值。使用-R直接查看所有寄存器,使用-R【指定寄存器】修改一个寄存器。如上图所示,AX中的值已经修改成功。其中,使用-R F可以检查标志寄存器的状态,如图所示。不是简单的0和1,不容易记住。可以参考实验书进行对比。可以看到,当前寄存器属于无溢出、正方向、允许中断、正号、非0、无辅助进位、奇数和无进位的状态。
-F:用于搜索指定位置的字符,并返回准确的地址。
-T:单步调试
-U:反汇编指令,可以将内存中存储的机器码反编译成汇编语言。参数之一是起始地址。
由于与L命令相同的原因,-W:调试没有成功。为了保护硬盘,windows不允许在这种情况下使用此命令。
通过学习可以发现,立即数在使用时默认为\(16\)十进制,不需要加H,反而在末尾加H会给出错误,调试时不区分大小写。
Emu8086也是一款非常不错的调试软件,操作简单,可以在线下载。
因为windows版本太高,无法在debug中打开,所以可以下载Dosbox在其中运行调试。
他灵魂的渴望是他命运的预言
你灵魂的欲望是你命运的先知。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/88692.html