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

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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
宏汇编程序设计(汇编语言的调试运行)

下面介绍两种方法来建立一个汇编语言源程序并且经过编译连接、调试运行。 编译程序选择微软的 MASM 5.0。该汇编编译程序是DOS下的老牌编译工具。 一、命令行方式: 1、源程序的建立 ???可以使用任何一种文本编辑器(如记事本、写字板等,在DOS下可以使用EDIT来编辑)。在保存文件时不要忘了汇编语言源程序的扩展名应为 .asm。 ???例:打开上面所说的任何一种文本编辑器,输入下面的汇编代码: ?????? (这是一个两数相加的程序,把 BUF 中的10与20相加) ??????CODE?? SEGMENT??? ???????????? ASSUME???CS:CODE, DS:CODE ???????????? ORG???100H ??????START:???JMP??? BEGIN ??????BUF??????DB???? 10,20,? ??????BEGIN:???PUSH???CS ???????????????POP??? DS ???????????????MOV??? AL,BUF ???????????????ADD????AL,BUF+1 ???????????????MOV????BUF+2,AL ???????????????MOV??? AH,4CH ???????????????INT??? 21H ??????CODE?????ENDS ???????????????END??? START ?? 输入完了,把它保存到编译程序masm目录下,如masm在D:盘,这个源文件名为 add.asm,那么就把add.asm保存到D:\masm 目录下。 2、编译 ?? 这一步是对汇编源程序 add.asm进行编译。 ?? 在DOS状态的提示符d:\masm 下键入? masm add.asm 编译程序就会出现各种提示,然后进行编译,如下所示: ?? ( 在出现的每一个提示后回车 ) ?? 图中所示 Object filename 是二进制目标文件,Source listing 是列表文件,Cross-reference 是交叉引用文件。由于在提示符后直接回车,所以只产生了一个文件:add.obj(二进制目标文件), 而没有产生NUL.lst(列表文件)和 NUL.crf(交叉引用文件)。对于这几个文件,以后会讲,现在暂时不管它。 ?? 其中的add.obj将用于连接后生成可执行文件。 ?? 当源程序正确没有错误时,会出现 0 Warning Error?? 0 Server Error 的信息,表示编译通过。否则,还需要根据提示的错误信息,找出错误后再进行编译。 3、连接 ?? 对生成的二进制目标文件进行连接后可以生成运行文件 add.exe ?? 连接操作如下: ?? 在DOS的 d:\masm 下键入 link add.obj,出现如下提示: ?? ( 在出现的每一个提示后按回车) ?? ?? 这时生成了add.exe文件。对于出现的 LINK: warning L4021: no stack segment 的提示,意思是没有定义堆栈段,可以不管它。 4、调试 ?? 对于每一个程序,虽然编译连接通过,但是并不能保证在运行时没有逻辑错误或者其它的运行时错误。这时就需要通过调试手段来排除这些错误。在DOS命令行下,可以用Debug来调试。如果会熟练使用Debug调试程序,对于汇编程序的调试是有很大帮助的。(对于Debug的详细用法,以后会讲) ?? 在DOS状态下,键入 Debug add.exe 进入Debug 状态,并对add.exe进行调试。如下: ?? ?? 回车后出现了一个闪动的 ‘-’符号,在这个符号后面可以键入各种Debug命令。 ?? 键入 U命令( U是反汇编 ,键入这个命令后可以看到add.exe的汇编代码),回车: ?? 可以看到在命令后面的第一条语句是 0B48:0100 EB04????????JMP???? 0106?? 这就是我们编写的汇编源程序里面的 JMP??? BEGIN?? 可以看到 BEGIN 这个符号经过编译后成了偏移地址 0106。 下面对这条语句标识一下: ? 0B48:????? 0100????? EB04????????JMP???? 0106?? ??? ↑??????? ↑??????? ↑????????????? ↑ 代码段地址? 偏移地址? 机器码???????? 汇编代码 其中汇编代码? JMP 0106 翻译成机器码 就是 EB04。程序最后执行的都是机器码,这里是用十六进制表示的二进制机器码。 ?? 由图中我们看到只有一条语句 即 JMP 0106 与先前写的源程序对应。而后面的语句是

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档