码迷,mamicode.com
首页 > 其他好文 > 详细

实验二

时间:2018-10-27 19:48:38      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:接下来   图片   体会   寄存器   就是   com   解决   image   观察   

用机器指令和汇编指令编程

四:实验任务

(!) 用e指令修改0021:00开始的内容

用d指令查看内容 

技术分享图片

(2)输入书上指令

技术分享图片

(3)单步执行

技术分享图片

可见 ax被修改为0021 后为2200 

ds被修改为ax的值0021

ss被修改为ax的值2200

ax后被修改为0021:0中偏移地址为0的内存值3130

技术分享图片

 

ax加偏移地址为2的内存地址中值后为6462

bx为0004内存地址中的3534 加入0006中值后为6c6a、

技术分享图片

 

执行push ax后 sp地址变为00fe sp-2

执行push bx后 sp地址变为00fc sp-2

执行pop ax 后 sp地址变为00fe sp+2 ax变为6c6a

执行pop bx 后 sp地址变为0100 sp+2 bx变为6462

执行push [0004] 后 sp地址变为00fe 内容为3534

执行push [0006] 后 sp地址变为00fc 内容为3736

  

由此可见 栈的特点就是先进后出,axbx中的值进行了交换,且每次执行都会修改sp的值,且栈poppush以字为单位,所以修改地址是-2+2

 

 

2.为什么2000:0-2000:f中的内容会发生改变?

技术分享图片

技术分享图片

技术分享图片

 

 文字陈述:

1. 前3行汇编指令的功能,特别是,mov sp, 10意味着什么?初始时栈顶和栈底分别是?

mov sp,10 意味着将sp的栈偏移地址变为10 前三行将地址2000:0010到2000:000e作为栈空间 初始栈顶为2000:0010 栈底为2000:000e

2. 基于单步调试观察到的变化,给出你对此的思考及可能原因分析。

不知道呀,猜测是内存中本身有内容?或者涉及到内存内部变量问题?

 

总结与体会

这一次实验熟练了一下栈的使用方法,并且留下了疑问 为什么3.19会产生这样的情况,同时可以看到通过栈可以实现两个寄存器内容的交换,希望在接下来能解决留下的问题。

 

实验二

标签:接下来   图片   体会   寄存器   就是   com   解决   image   观察   

原文地址:https://www.cnblogs.com/masami/p/9862686.html

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