- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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命令直
您可能关注的文档
- 汇编语言上机 实验一 DEBUG常用命令及8086指令使用.doc
- 微机原理与接口技术 实验二 8086汇编语言的编程实践.docx
- 课程教学大纲_微机原理及应用.doc
- 汇编语言实验教学手册完成.doc
- 实验三 编程实现子程序调用.doc
- 微机原理与接口技术 实验一 8086汇编语言的编程实践.docx
- 汇编DEBUG与上机实验.ppt
- 电气微机实验.doc
- 汇编语言第7次实验报告:非数值运算程序设计.doc
- 实验一 预备实验.ppt
- 2024年中国钽材市场调查研究报告.docx
- 2024年中国不锈钢清洗车市场调查研究报告.docx
- 2024年中国分类垃圾箱市场调查研究报告.docx
- 2024年中国水气电磁阀市场调查研究报告.docx
- 2024年中国绿藻片市场调查研究报告.docx
- 2010-2023历年初中毕业升学考试(青海西宁卷)数学(带解析).docx
- 2010-2023历年福建厦门高一下学期质量检测地理卷.docx
- 2010-2023历年初中数学单元提优测试卷公式法(带解析).docx
- 2010-2023历年初中毕业升学考试(山东德州卷)化学(带解析).docx
- 2010-2023历年初中毕业升学考试(四川省泸州卷)化学(带解析).docx
文档评论(0)