. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于教程中问题3.11中SP值的问题  [待解决] 回复[ 2次 ]   点击[ 302次 ]  
zz63948992
[帖 主]   [ 发表时间:2013-08-01 17:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-08-01 17:00
问题3.11
如果将10000H~1FFFFH这段空间当做栈段,初始状态是空的,此时,SS=1000H,SP=?

此时整个栈空间占了最大值64KB,计算下来SP应该等于10000H才对,但SP是一个字节最大只能表示FFFFH的数,所以最终SP=0000H,但这时岂不是指向了整个栈空间的最上端?下次压栈的时候压到哪儿去了呢?
a380556791
[第1楼]   [ 回复时间:2013-08-01 18:42 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2013-05-23 21:42
因为压栈的时候执行的是(SP)=(SP)-2,所以sp=0000H-2=0FFFEH
而压栈时SS是不会改变的,所以用到的两个内存单元还是1000H:0FFFFH和1000H:0FFFEH
如果不好理解的话你就想成这个栈是循环的,首尾相接,那么0FFFFH的下一个偏移地址是0000H
zz63948992
[第2楼]   [ 回复时间:2013-08-01 20:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-08-01 17:00
懂了,0000H-2H=FFFEH
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved