实验五__汇编实验过程与DEBUG工具使用.doc

实验五__汇编实验过程与DEBUG工具使用.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验五__汇编实验过程与DEBUG工具使用

实验五 汇编实验过程与DEBUG工具使用 一、实验目的: 掌握汇编实验过程; 熟悉DEBUG命令 二、实验内容: 实现两个数据DATA_A与DATA_B相加,结果存于RESULT。 三、实验要求: 初学者易认为程序结果自动显示在屏幕,结果运行本程序什么都没看到。原因在于RESULT是一个内存单元,放在内存单元的结果不会自动显示在屏幕上。怎样才能看到结果?答案是利用DEBUG工具,它可以调试程序、查看内存!本实验要求你能找到内存中哪一个单元是RESULT,并把结果读出来(现阶段可能比较困难)。 四、程序代码sy1.asm: DATAS SEGMENT ;数据段 DATA_A DB 7 DATA_B DB 8 RESULT DB ? DATAS ENDS CODES SEGMENT ;代码段 ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS ;初始化 MOV DS,AX MOV AL,DATA_A ;数据A送AL寄存器 ADD AL,DATA_B ;AL与数据B相加送AL MOV RESULT,AL ;AL送RESULT MOV AX,4C00H ;退出程序,返回dos INT 21H CODES ENDS END START 五、编译(生成目标代码.obj) 注意:将masm51复制到C盘解压,源文件sy1.asm复制到解压目录 (或者先在C盘内创建masm51文件夹,将sy1.asm、解压出来的命令MASM.EXE、LINK.EXE等复制进该目录) 进入DOS(方法:程序→运行,输入cmd确定),第一步输入CD\回到C盘根目录,第二步cd masm51,使光标前呈现C:\masm51;就可以使用后面的编译连接命令了 图1-1 直接回车不需要任何输入,如果0警告0错误说明编译通过,可以进行后续工作了,否则需要修改程序至正确为止。 六、连接(生成可执行代码.exe) 图1-2 直接回车不需要任何输入,如果没有报错,查看masm51目录下已经生成了sy1.exe。图片上最后有个警告,意思是没有定义堆栈段,本例用不到堆栈,所以不管,警告信息不影响可执行代码的产生。 7、执行 输入sy1.exe然后回车,结果如下图,原来一场空。 图1-3 8、查看结果 debug sy1.exe加载可执行程序,使用子命令u,查看代码在内存的存放情况,如下图 图1-4 蓝色虚线部分,不同的机器可能不同,第一次载入与第二次载入也可能不同(原因?后续学习告诉你!);红色、黄色实线的部分本例必定相同;且黄色实线部分为指令,一定与源代码指令对应,源代码到INT 21H就完蛋了,所以我们的程序载入到内存偏移0012就完了,后面的一概不管。初学者应抓住相同部分调试程序,不要因为看到自己机器与本例程数据不同而忧心烦恼。 图1-5 如上图,本例最后一条代码载入内存的位置已找到0C1A:0012,只要将程序运行到最后一条指令就可以查看结果。使用g 0012命令,此处IP初始执行第一条指令,默认从0开始执行,和g =0 0012一样,下图显示运行后的CPU当前状态。 图1-6 “神啊!我要到哪里查看结果?”“神说,当然是数据段。”数据段查看命令d。 由于数据段总共只定义了三个字节,第一个DATA_A,第二个是DATA_B,第三个是RESULT。内存以字节编址,数据段第一个字节偏移从0开始则,DATA_A偏移为0,DATA_B偏移为1,RESULT偏移为2。所以只需要查数据段的0,1,2三个字节,其中最后一个字节存的是结果。命令d ds:0 2 图1-7 上图第二行前面显示的逻辑地址是你查看的第一个单元的地址,三个单元的值用空格隔开,看出(DATA_A)=7;(DATA_B)=8;(RESULT)=0FH=15,至此,程序结果正确。 恭喜完成第一个汇编语言程序! 思考:修改DATA_A,DATA_ B的值,查看计算结果是否正确。 提示:方法1,修改源程序,重新编译连接之后,再重复使用上述过程; 方法2,使用debug之e命令直

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档