8086中的堆栈段和堆栈指针 [英] stack segment and stack pointer in 8086
本文介绍了8086中的堆栈段和堆栈指针的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我对堆栈段(Ss)和堆栈指针(Sp)寄存器有一点困惑。 当堆栈为空时,sp值是否等于ss值? 我读到,当我们把一个字(2字节)压入堆栈时,sp递减2,如果第一个语句为真(sp=ss),那么我可以说如果堆栈不为空,堆栈指针的值总是小于或等于堆栈段的值这是真的吗?? 如果我们将一个值影响到sp,使其大于ss,会发生什么??即: MOV SS,200小时 移动SP,400h MOV AX,1010h 推送AX
如有错误,请提前更正
推荐答案
否,ss
是像cs
或ds
这样的段寄存器。它们按照通常的实模式规则参与形成物理地址,如address = 16 * segment + offset
,其中在堆栈的情况下偏移量来自sp
。因此,推送到堆栈上的最后一项具有16 * ss + sp
地址。除非您具有堆栈结尾的先验知识,而且ss
与sp
相比的数值根本没有意义,否则您不知道堆栈何时为空。
这篇关于8086中的堆栈段和堆栈指针的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文