收藏 分销(赏)

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

上传人:仙人****88 文档编号:9343068 上传时间:2025-03-22 格式:DOC 页数:5 大小:40KB 下载积分:10 金币
下载 相关 举报
宏汇编程序设计(汇编语言的调试运行).doc_第1页
第1页 / 共5页
宏汇编程序设计(汇编语言的调试运行).doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
下面介绍两种方法来建立一个汇编语言源程序并且经过编译连接、调试运行。 编译程序选择微软的 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 与先前写的源程序对应。而后面的语句是什么,完全不是源程序中的汇编语句。这是由于有一个JMP 跳转语句的原故。没有跳转到放代码的地址,当然看不到源程序的代码。用T命令:    ( T 命令是跟踪调试命令,这里只执行一条语句)     - T     回车 出现在-t后面的是寄存器的状态、标志位的状态及下面的一条将要执行的指令   PUSH    CS 再用U命令看一下:    -U   回车 可以看到从偏移地址 0106至0114 就是我们的汇编代码。 然后,可以用T命令一步一步的进行调试观察。 怎样观察调试过程中存储器里面的数据变化    使用 D 命令(D命令是显示存储单元的命令)。 当用T命令跟踪到 MOV AL,[0103]时,键入:       - d 103 就可以看到在数据段偏移地址0103处存放在 BUF 中的数据 0A 14 ,其中0A 和14是以十六进制表示的10和20。 当程序执行完毕,再用D命令观察一下:       -D 103 可以看到在偏移0105地址处,数字为1E,这就是0A与14相加后的结果,其结果由语句 MOV    BUF+2,AL 送到偏移0105保存。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服