宏汇编程序设计(汇编语言的调试运行)

宏汇编程序设计(汇编语言的调试运行)

ID:35333824

大小:121.01 KB

页数:6页

时间:2019-03-23

宏汇编程序设计(汇编语言的调试运行)_第1页
宏汇编程序设计(汇编语言的调试运行)_第2页
宏汇编程序设计(汇编语言的调试运行)_第3页
宏汇编程序设计(汇编语言的调试运行)_第4页
宏汇编程序设计(汇编语言的调试运行)_第5页
资源描述:

《宏汇编程序设计(汇编语言的调试运行)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、下面介绍两种方法來建立一个汇编语言源程序并且经过编译连接、调试运行。编译程序选择微软的MASM5.0o该汇编编译程序是DOS下的老牌编译工具。一、命令行方式:1、源程序的建立可以使用任何一种文本编辑器(如记事本、写字板等,在DOS下可以使用EDIT來编辑)。在保存文件时不要忘了汇编语言源程序的扩展名应为.asmo例:打开上面所说的任何一种文本编辑器,输入下面的汇编代码:(这是一个两数相加的程序,把BUF中的10与20相加)CODESEGMENTASSUMECS:CODE,DS:CODEORG100HSTART:JMPBEGINBUFDB10,20,

2、?BEGIN:PUSHCSPOPDSMOVAL,BUFADDAL,BUF+1MOVBUF+2,ALMOVAH,4CHINT21HCODEENDSENDSTART输入完了,把它保存到编译程序masm目录下,如masm在D:盘,这个源文件名为add.asm,那么就把add.asm保存到D:masm目录下。2、编译这一步是对汇编源程序add.asm进行编译。在DOS状态的提示符d:masm下键入masmadd.asm编译程序就会出现各种提示,然后进行编译,如下所示:(在出现的每一个提示后回车)图中所示Objectfilename是二进制目标文件,So

3、urcelisting是列表文件,Cross-reference是交义引用文件。由于在提示符后直接回车,所以只产生了一个文件:add.obj(二进制目标文件),而没有产生NUL.lst例表文件)和NUL.crf(交叉引用文件)°对于这儿个文件,以后会讲,现在暂吋不管它。其中的add.obj将用于连接后生成可执行文件。当源程序正确没有错误吋,会出现0WarningError0ServerError的信息,表示编译通过。否则,还需要根据提示的错误信息,找出错误后再进行编译。3、连接对生成的二进制目标文件进行连接后可以生成运行文件add.exe连接操作如

4、下:在DOS的d:masm下键入linkadd.obj,出现如下提示:(在出现的每一个提示后按回车)这时生成了add.exe文件。对于出现的LINK:warningL4021:nostacksegment的提示,意思是没有定义堆栈段,可以不管它。4、调试对于每一个程序,虽然编译连接通过,但是并不能保证在运行吋没有逻辑错误或者其它的运行时错误。这时就需要通过调试手段來排除这些错误。在DOS命令行下,可以用Debug来调试。如果会熟练使用Debug调试程序,对于汇编程序的调试是有很大帮助的。(对于Debug的详细用法,以后会讲)在DOS状态下,键入D

5、ebugadd.exe进入Debug状态,并对add.exe进行调试。女口下:冋车后出现了一个闪动的「符号,在这个符号后面可以键入各种Debug命令。键入U命令(U是反汇编,键入这个命令后可以看到add.exe的汇编代码),回车:D:asn>debugadd.exe_U648:0100EB04JMP0106B48:010290NOPB48:01030A14ORDL,[SI]B48:0105000E1FA0ADD[A01FJ.CLB48:01090301ADDAX,[BX+DIJB48:010B02060401ADDAL,[0104JB48:01

6、0FA20501MOU[0105J.ALB48:0112B44CMOUAH.4CB48:0114CD21INT21B48:01167509JNZ0121B48:0118FF4EFEDECWORDPTR[BP-02JB48:011B837EFE00CMPWORDPTR[BP-02J.+00B48:011F75EFJNZ0110可以看到在命令后面的第一条语句是0B48:0100EB04JMP0106这就是我们编写的汇编源程序里面的JMPBEGIN可以看到BEGrN这个符号经过编译后成了偏移地址0106。下面对这条语句标识一下:0B4&0100EB04J

7、MP0106TTTT代码段地址偏移地址机器码汇编代码其屮汇编代码JMP0106翻译成机器码就是EB04o程序最后执行的都是机器码,这里是用十六进制表示的二进制机器码。由图中我们看到只有一条语句即JMP0106与先前写的源程序对应。而后面的语句是什么,完全不是源程序屮的汇编语句。这是由于有一个JMP跳转语句的原故。没有跳转到放代码的地址,当然看不到源程序的代码。用T命令:(T命令是跟踪调试命令,这里只执行一条语句)B48:011B837EFE00B48:011F75EFMN■T回车WORDPTR[BP-02J.+00■叮rTrTrTrTrTrl011

8、0CX=0116DX=0000SP=0000BP=0000SI=00SS=0B48CS=0B48IP=0106NUUPEl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。