求教,关于栈顶变化范围0~ffffh的问题,谢谢
课本中提到栈顶的最大变化范围位0~ffffh我认为是0到fffch
我的理解是:8086是16寄存器,最大64kb,如果是栈的定义范围可以为0~ffffh,但书里说的是栈顶,最大为fffch。
求教各位高手,我的理解哪里有问题,求详细讲解 书里到底是说 FFFFH 还是 FFFCH 你发的我没看懂 书上说的是ffffh,我的理解是fffch,您能跟讲讲我这问题出在哪了么 本帖最后由 零度非安全 于 2015-5-17 23:29 编辑
楼主,你好!对于你的问题我的理解如下:
首先8086CPU是16位的,所以说寄存器也是16位的,因此最大为2的16次方bit,即65536bit,所以地址变换范围是从0到65535(地址是从0开始的),十进制的65535相当于十六进制中的FFFF,所以变换范围变成了0到FFFF,栈也是如此
那么你能告诉我你分析那个数据FFFC是依据什么得到的? 您说得对,就是因位寄存器也是16位的。所以我的理解是栈的空间最大为64kb
一个栈不是两个字节么,所以我的理解是栈顶最大是fffch
栈的最大取值是ffffh,栈顶是fffch,我知道我的理解有问题,请您给我说说我的问题出在哪了,谢谢 如果你把栈顶的 初始值定为0 你去计算push的时候 CPU计算是0减去1的位置开始存放的
0减去1不够减又因为计算机是16位 0000H-0001H 借位结果是 FFFFH 那就是从FFFF开始存放数据 所以 栈的最大容量就是0H-FFFFH 关于这个可以参见问题3.11{:1_1:} 当定义一个栈为空时,sp指向栈底+1那个位置是吧!那么ffff-1=fffe,因该最大是0-fffe的栈啊
页:
[1]