码迷,mamicode.com
首页 > 编程语言 > 详细

汇编语言_实验二_用机器指令和汇编指令编程(2)

时间:2018-10-28 17:57:07      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:class   指令   pop   相对   改变   变化   原来   相同   体会   

---恢复内容开始---

四、实验结论

实验任务(1):

1.使用e命令将将内存单元 0021:0 ~0021:7 连续 8 个字节数据修改为 30H, 31H, 32H, 33H,34H,35H,36H,37H,使用d命令查看修改结果:

技术分享图片

2.使用a命令将课本P74页汇编指令写入内存:

技术分享图片

3.将以上指令分步执行,观察执行结果:

技术分享图片

技术分享图片

技术分享图片

技术分享图片

实验前理论分析结果如下:

mov ax,0021

mov ds,ax

 

mov ax,2200

mov ss,ax

 

mov sp,0100

 

mov ax,[0]                     ; ax=3130H

add ax,[2]                      ; ax=6462H              

mov bx,[4]                     ; bx=3534H           

add bx,[6]                      ; bx=6C6AH         

 

push ax                         ; sp=00FEH,修改的内存单元的地址是220FEH 内容为6462H      

push bx                         ; sp=00FCH,修改的内存单元的地址是220FCH 内容为3534H                  

pop ax                           ; sp=00FEH,ax=3534H      

pop bx                           ; sp=0100H,bx=6462H

 

push [4]                         ; sp=00FEH,修改的内存单元的地址是220FEH 内容为3534H              

push [6]                         ; sp=00FCH,修改的内存单元的地址是220FCH 内容为6C6AH

将理论分析与上机调试结果作比较,发现二者完全相同。

实验任务(2):

1.使用a命令将课本P75页的七行指令输入内存,使用 e 命令修改 2000:0~2000:f 的值,使用d命令查看修改后的值:

技术分享图片

2.单步调试每一条指令,并在每一条指令执行完毕后,查看内存单元20000H~2000FH的值:

技术分享图片

技术分享图片

技术分享图片

3.① mov ax,2000:将2000H放入寄存器ax中;mov ss,ax:将寄存器ax中的数据赋给SS;mov sp,10:将0010H放入寄存器sp中,实际上我们通过这个指令确定了栈段的大小。初始时栈顶位于2000:0010,栈底位于2000:000E。

②对于内存单元2000:0~2000:F发生的变化,我观察到以下几点:

  变化的位置并不是固定的——不如说,是相对的,始终集中在栈顶先前5个字。而且第一个字始终是寄存器AX中的值,第三个字第四个字分别是IP和CS的值(0000H和01A3H暂时还未解明其含义)。

  变化发生在修改栈段后的任一一条汇编指令执行后,但是通过r命令直接修改寄存器的话,并不会发生任何变化,不过一旦执行任何一条汇编指令,即使是和栈、和上面涉及到的三个寄存器都无关的指令(比如mov b,1111),执行后相应位置内存单元中的数据也会随之改变。当然还有一种可能是栈顶之前存储一份寄存器的状态,并不是执行某一条汇编指令后才开始的,而是栈顶本来就要存放寄存器的状态,只是在修改SS之前,2000:0000~2000:000F这些内存单元并不是栈顶之前的部分。我因此又实验了一下发现,即使不修改SS:SP的值,在执行汇编指令后也会在SS:SP之前存储这些东西,而一旦修改了SS:SP的值,原来与寄存器同步更新的内存单元就不再变了。至于为什么是这样,我还是查查资料吧。_(:з」∠)_

五、总结与体会

  通过本次实验,我提高了对[栈]内存空间特性的掌握和理解,进一步加深了使用debug工具的熟练程度。同时,通过查找资料,解决了针对实验中出现的问题而产生的疑惑,对8086CPU的中断机制有了一定的了解。

汇编语言_实验二_用机器指令和汇编指令编程(2)

标签:class   指令   pop   相对   改变   变化   原来   相同   体会   

原文地址:https://www.cnblogs.com/AlexanderYang/p/9866063.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!