汇编网首页登录博客注册
ameteur的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
好友圈
文章收藏
友情链接

[2011-08-16 11:59] 第三章 《汇编语言》 寄存器(内存访问) 实验任务

(1) 使用Debug将上面的程序段写入内存,逐条执行,根据指令执行后的实际情况填空。
mov ax,ffff
mov ds,ax
mov ax,2000
mov ss,ax
mov sp,0100

mov ax[0]  ;ax=5BEAH
add ax,[2] ;ax=5CCAH
mov bx,[4] ;bx=30F0H
add bx,[6] ;bx=6029H

push ax    ;sp=00FE 修改的内存单元的地址是2200:00FE 内容为5CCAH.
push bx    ;sp=00FC 修改的内存单元的地址是2200:00FC 内容为6029H.
pop ax     ;sp=00FE ax=6029H.
pop bx     ;sp=0100 ax=5CCAH.


push [4]   ;sp=00FE 修改的内存单元的地址是2200:00FE 内容为30F0H.

push [6]   ;sp=00FC 修改的内存单元的地址是2200:00FC 内容为2F39H.
这里我想,是让我们现再次认清cs:ip;ds:ip,ss:sp几个地址中数据,指令,栈的区别。

(2)仔细观察图3.19中的实验过程,然后分析:为什么2000:0~2000:F中的内容为什么会发生改变?

根据观察发现这个地址区间改变的数据正好是CS,IP,DS,SP寄存器中的值,我在想这里是不是像前面所提到的,mov ss,ax,mov sp,10 g 一样在debug中看不到mov sp,10的执行,这里一样有一个语句已经在后面执行了。不是很明白。
评论次数(1)  |  浏览次数(441)  |  类型(汇编心得) |  收藏此文  | 

[  mywiil   发表于  2011-08-16 15:43  ]

因为这段空间是当前程序的栈空间,出了你的程序主动使用栈,还有其他的系统程序也会使用,比如说你现在就处在的debug,这里涉及到中断的一些知识,现在不明白正常,mark一下,后面的章节会给你将明白的。

不过,这之后要注意栈这个东西,你不主动用,不代表没人用啊。呵呵

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码