cclingg 发表于 2015-5-17 17:40:58

求教,关于栈顶变化范围0~ffffh的问题,谢谢

课本中提到栈顶的最大变化范围位0~ffffh
我认为是0到fffch
我的理解是:8086是16寄存器,最大64kb,如果是栈的定义范围可以为0~ffffh,但书里说的是栈顶,最大为fffch。

求教各位高手,我的理解哪里有问题,求详细讲解

Maoshao 发表于 2015-5-17 17:53:53

书里到底是说 FFFFH 还是 FFFCH    你发的我没看懂

cclingg 发表于 2015-5-17 17:54:50

书上说的是ffffh,我的理解是fffch,您能跟讲讲我这问题出在哪了么

零度非安全 发表于 2015-5-17 23:26:41

本帖最后由 零度非安全 于 2015-5-17 23:29 编辑

楼主,你好!对于你的问题我的理解如下:
首先8086CPU是16位的,所以说寄存器也是16位的,因此最大为2的16次方bit,即65536bit,所以地址变换范围是从0到65535(地址是从0开始的),十进制的65535相当于十六进制中的FFFF,所以变换范围变成了0到FFFF,栈也是如此
那么你能告诉我你分析那个数据FFFC是依据什么得到的?

cclingg 发表于 2015-5-18 12:49:23

您说得对,就是因位寄存器也是16位的。所以我的理解是栈的空间最大为64kb
一个栈不是两个字节么,所以我的理解是栈顶最大是fffch


栈的最大取值是ffffh,栈顶是fffch,我知道我的理解有问题,请您给我说说我的问题出在哪了,谢谢

Maoshao 发表于 2015-5-18 15:02:38

如果你把栈顶的 初始值定为0    你去计算push的时候      CPU计算是0减去1的位置开始存放的
0减去1不够减又因为计算机是16位      0000H-0001H   借位结果是            FFFFH    那就是从FFFF开始存放数据   所以 栈的最大容量就是0H-FFFFH

nulptr 发表于 2015-5-18 22:12:31

关于这个可以参见问题3.11{:1_1:}

星空·无限 发表于 2015-8-15 22:06:24

当定义一个栈为空时,sp指向栈底+1那个位置是吧!那么ffff-1=fffe,因该最大是0-fffe的栈啊
页: [1]
查看完整版本: 求教,关于栈顶变化范围0~ffffh的问题,谢谢