. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
主题 : :  第三章最后一个任务整不明白  [待解决] 回复[ 25次 ]   点击[ 2527次 ]  
helloworld
[帖 主] [ 发表时间:2007-10-25 11:21 ] 
荣誉值:10
信誉值:6
注册日期:2007-10-20 14:34
0B07:0100 mov ax,2000
0B07:0103 mov ss,ax
0B07:0105 mov sp,10 
0B07:0108 mov ax,3123 
0B07:010B push ax
0B07:010C mov ax,3366
0B07:010F push ax 

实验问我20000H---2000FH的数据为什么会改变,那这不明摆着代码将栈段设为20000H-2000FH这个范围,push以后,肯定是将ax的数据压进这个段里的,那所以就变了嘛,但我不知道他怎么把cs:ip的数据压进去了,而不是将3123压进去?
b2311057
[第19楼] [ 回复时间:2008-12-25 13:32 ] 
荣誉值:1
信誉值:0
注册日期:2008-12-16 07:53
第二个题我先看也是比较迷惑,在论坛上逛了一下,看见是这个解释:
------------------
通过改变寄存器的值来测试,发现T命令"保护现场"的经过是:
先是标志寄存器入栈
接着CS寄存器入栈
接着IP寄存器入栈
接着是BP寄存器入栈
最着是AX寄存器入栈

至于为什么是这样入栈,我不清楚,请高手回答!
------------------

但是我觉得既然我们没有指定栈的大小也无法指定栈的大小
我们指定的SS:SP为2000H:000H到2000H:000FH也只是我们心里想法
计算机并不知道这个空间我们已经预定了。
那么在没有任何PUSH的时候,SS:SP指向的栈大小是空的,那么计算机
就可以使用任何位置存放临时数据,只有栈内存放数据后,栈才会变大
CPU就将原来占用的位置腾出来给栈使用。
后面我接下来运行后面的两个PUSH AX命令可以看见
栈就像气球一样在放进去东西后自动膨胀,数据自动左移位
使用POP AX和POP BX后又会自动收缩,证实了我的想法。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved