- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编实验2实验报告
南京信息工程大学实验报告实验名称用机器指令和汇编指令编程实验日期2017-10-26得分指导教师汇编源程序编写-汇编-连接-调试系计软院专业计科年级2016级班次姓名学号一、实验目的1. 理解栈的特性2. 掌握汇编语言源程序编写→汇编→链接→调试的方法二、实验准备1. 复习第3章「栈」的知识:栈的特性、相关寄存器SS和SP、相关指令push和pop2. 完成教材3.6~3.9节内的问题3.6~3.10,检测点3.11~3.123. 预习第4章完整汇编源程序编写→汇编→连接→运行→调试的方法4. 完成「三、实验内容」中要求提前从理论上分析记录的内容三、实验内容1.教材实验2(P71)(1)练习「1.预备知识:Debug的使用」(2)在练习基础上,完成「2. 实验任务」补充:对「2. 实验任务」中的(1)做如下调整:①在使用a命令输入指令调试前,使用e命令将内存单元0020:0 ~0020:7连续8个字节数据修改为10H, 20H, 30H, 40H,50H,60H,70H,80H②将P74实验任务(1)中第1行的mov ax, ffff→改为mov ax, 0020实验前,请理论上分析指令执行后各个填空处的值,并记录下来。2. 练习:完整汇编源程序编写→汇编→连接→运行→调试第1步:编写一个完整的汇编源程序example.asm第2步:对源程序example.asm进行汇编、连接、运行、调试①运行程序,观察程序输出结果是什么?将dl的值修改为0~9中任何一个数字,重新汇编→连接→运行,观察结果的变化。②对生成的可执行文件exampe.exe进行调试。使用r命令查看。观察寄存器cx的值是多少;观察寄存器ds和cs的值是多少,它们之间是否满足关系(cs)=(ds)+10H?③使用u命令对exampe.exe进行反汇编,观察反汇编得到的源代码。④使用t命令和p命令(遇到int命令时,用p命令)单步调试,观察结果。四、实验结论1. 教材实验2(P74)实验任务(1):①②使用e命令修改0020:0~0020:7数据,及修改后查看的操作,并使用a命令输入的p74指令③每一行指令单步调试,, ④ P74中指令执行后各个寄存器填空结果,ax=2010h,ax=6040h,bx=6050h,bx=E0C0,sp=00FE,地址220FEH,内容为6040h,sp=00FC,地址为220FCH,内容为E0C0h;sp=00FE,ax=E0C0h,sp=0100,bx=6040h,sp=00FE,地址为220FEH,内容为6050h,sp=00FC,地址为220FCH,内容为8070h,实验任务(2):用a命令输入汇编指令,并用e命令修改值。变化:我观察到第一次执行之后用d命令查看2000:0 f的数值并没有变化,从第二次执行之后2000:0 f中的值就开始变化,假设有一个栈,让ax的值先入栈,第二次执行后2000:6 7单元中的值开始变成从栈中依次出栈的两个值,即ax原本为2000,第二次执行后2000:6 7单元中的值变为00 20,接着下面的两个单元的值为 00 00,接下来两个内存单元的值就是ip值的反过来(同ax),再接着就是cs的值反过来(同ax),再接着两个单元变为A6 01,第三次执行后2000:6 7单元中也是同上,也是接着下面的两个单元的值为 00 00,接下来两个内存单元的值就是ip值入栈按顺序依次返回出栈的两个值(同ax),再接着两个单元变为A6 01,第四次2000:4 5中单元开始往后的值开始同上一样的变化,到A6 01 后又开始变成ax入栈再按顺序依次返回出栈的两个值,第五次从2000:4 5单元开始往后的值开始同上一样的变化,到 66 33 之后的两个单元又返回到上一个ax入栈再按顺序依次返回出栈的两个值。原因:又做了些实验还是没能想明白,上网查了一下。t命令为单步中断,CPU会保护现场,即顺序把标志寄存器、CS、IP入栈。2. 练习:完整汇编源程序编写→汇编→连接→运行→调试编写程序并编译连接运行。①输出结果为1,将dl修改为0~9中任意一个数后,结果为dl 的值。②用r命令查看如图所示,cx=000E,ds=0760,cs=0770,cs,ds满足(cs)=(ds)+10h③使用u命令对exampe.exe进行反汇编,④使用t命令和p命令(遇到int命令时,用p命令)单步调试问题:用p命令执行后,ax的值是怎样变化的?五、总结与体会1.本次实验我知道了ax寄存器可以存放四位数值,是十六位寄存器,还有执行push指令,sp的值要减2.2.在一个完整的汇编源程序中,至少有一个段,要输入段的开始段的结束,还要有程序返回,以及程序结束的end伪指令。3.执行时碰到int要用p指令执行。
文档评论(0)