欢迎来到天天文库
浏览记录
ID:1045007
大小:168.50 KB
页数:7页
时间:2017-11-07
《汇编语言调试程序debug练习(二)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、汇编语言调试程序DEBUG的练习1.目的要求(1)学习使用DEBUG程序的各种命令。(2)利用DEBUG学习8086指令系统,理解标志位寄存器的意义。(3)掌握用DEBUG调试汇编程序的方法2.实验内容(1)完成C=A+B的汇编程序。(2)练习汇编语言指令的使用以及DEBUG的文件调试方法。3.实验所用仪器、工具计算机一台4.实验步骤源程序如下:DatasegmentAdw5773hBdw98cdhCdw?DataendsCodesegmentAssumecs:code,ds:dataStart:movax,dataMovax,a
2、Addax,bMovc,axMovah,4chInt21hCodeendsEndstart步骤:1)打开edit,保存为TEST.ASM2)masmTEST.ASM生成TEST.OBJ3)linkTEST.OBJ生成TEST.EXE4).调试即对生成的EXE的文件进行调试,方法是使用上节我们所学习的DEBUG。调试步骤:1)D:MASMdebugTEST.EXE(后缀名不可省略)进入DEBUG的文件调试状态。该状态与前面我们直接用DEBUG调试指令的状态是完全不同的,可以通过R指令进行观察;-R2)DEBUG调试EXE文件开始
3、可直接用U0指令查看TEST的代码。-U03)对应的结果为:反汇编的程序源程序13CF:0000B8CE13MOVAX,13CEMOVAX,DATA13CF:00038ED8MOVDS,AXMOVDS,AX13CF:0005A10000MOVAX,[0000]MOVAX,A13CF:000803060200ADDAX,[0002]ADDAX,B13CF:000CA30400MOV[0004],AXMOVC,AX13CF:000FB44CMOVAH,4CMOVAH,4CH13CF:0011CD21INT21INT21H13CF:00
4、130B87C022ORAX,[BX+22C0]13CF:001774E1JZFFFA13CF:00198B9EFEFEMOVBX,[BP+FEFE]13CF:001DD1E3SHLBX,113CF:001FD1E3SHLBX,1与我们原来编的程序比较有什么不同???在程序中我们使用的是A、B、C,但是在该状态下结果就变成了[0000H],[0002H],[0004H]。因此要查看结果实际上是查看数据段中偏移量为0004H的单元,是字单元。4)我们需要做的就是运行程序查看结果由于MOVAH,4CHINT21H;功能是返回DOS,一
5、般情况为了观察寄存器的内容我们不希望这两句运行,所以就需要做下面的操作。-A000F13CF:000FINT313CF:0010目的就是运行到000F位置停下来,但是INT3在汇编源程序的编程中禁止使用。5)这样就可以运行程序,具体指令为:-G=0000那么可以从AX的内容来查看结果。但是真正应该查看结果是在C中的,从程序中我们可以看出C其实就是对应的是数据段中偏移量为0004的两个单元。因此要查看C就需要用到另外一条DEBUG指令D(回忆D指令的功能和用法)6)具体用法:-DDS:0004(DS也可以省略)你就会看到结果!能不能
6、找到?7)最后是E指令的使用:如果要实现其他数值的求和并且都是字单元(就是改变了A,B数值),实现的方法就是改程序,然后重新汇编连接,重新调试,很明显这样是很麻烦的。另一种方法就是在调试状态下直接实现,使用E指令,回忆E指令的功能和使用方法。具体指令:-EDS:0000输入新的数值即可,当然数据类型不同方法也不同。然后用G指令重新运行,即可采用6)的方法查看结果。这个在调试程序过程中是非常常用的。
此文档下载收益归作者所有