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

我的博客

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

[2023-04-18 17:48] 第3章 问题 3.11、3.12

问题 3.11、3.12

将10000H~1FFFFH地址空间当作栈段,初始状态为空,则SS=1000H时,SP寄存器存储的数据是什么?栈空间的容量有多大?
当初始状态栈设置SS=1000H,则只要既不用手工也不通过指令对SS进行修改,只是任SP随栈指令操作而自然变动,SS是不会因SP的任何改变而发生改变。SP的变化范围是0000H~FFFFH,所以当SP=0000H时,再次执行push将使得SP=SP-2,由于溢出效应,SP变为FFFEH,于是SS:SP由1000:0000变为1000:FFFE;当SP=FFFFH,再次执行pop使得SP=SP+2,溢出效应导致SP由FFFFH变为0001H,SS:SP由1000:FFFF变为1000:0001。可见,栈空间10000H~1FFFFH形成一个闭环,让栈空间的存储单元可以循环使用而不会越界。
由于SP的变化范围0000H~FFFFH是64KB的容量,所以一个栈段的最大容量也就是64KB:一个地址代表一个内存单元,一个内存单元的容量为1B;在0~FFFFH范围内共有2¹⁶个数值,一个值就是一个地址,因此也就是2¹⁶个地址;可见这个栈的空间容量为2¹⁶B,即2⁶KB(64KB)。
评论次数(0)  |  浏览次数(110)  |  类型(问题分析) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码