1、2-4 8086/8088 的堆栈,一、堆栈1、定义2、操作3、生长方式 二、8086/8088的堆栈1、8086/8088 的堆栈定义2、操作,2-4 堆栈的定义,一、堆栈的定义按先进后出方式工作的特殊区域二、堆栈的操作1、压入操作:将数放入到堆栈中。2、弹出操作:从堆栈中弹出数据。3、堆栈的生长方式绝大多数计算机采用向上生长方式,当压入操作后,堆栈指示器SP向地址减小方向变化。,8086/8088 的堆栈的组织,一、8086/8088的堆栈组织1、堆栈是由SS指定的一段存储区域。最大深度 64KB。逻辑地址 SS:SP 二、8086/8088的堆栈操作 1、以16位二进制数进行操作。2、
2、设置堆栈。STACK1 SEGMENT PARA STACKDB 40H DUP(0)STACK1 ENDS,8086/8088 的堆栈的初始化,SP,SS,SP,初始化时,Bottom栈底,堆栈段,主存,Top栈顶,已存入数据,堆栈段的段基址,当前栈顶字单元的内容为1234H,8086/8088 的堆栈,3、堆栈长度: 4、栈底(Bottom):栈底指向的是堆栈段中地址最大的字单元。 5、栈顶(Top):栈顶是堆栈指针SP指向的位置。当前栈顶字单元的逻辑地址为 SS:SP堆栈的基本操作:压栈、出栈,8086/8088 的堆栈,6、堆栈的作用:暂存数据过程调用或处理中断时暂存断点信息。7、 P
3、USH 压栈操作:先将(SP)2 SP 首先修改栈顶指针,使指向空字单元。数据 (SP )再将数据送入SP指向的空字单元中。,8086/8088入栈操作,8、 POP弹出操作: 寄存器/字单元 (SP) 将栈顶字单元内容送到指定的寄存器或字单元中。 1)先将(SP)指针单元中的数据弹到低8位装置中。 2)再将(SP1)指针单元中的数据弹到高8位装置中。 (SP)2SP 修改栈顶指针以指向新栈顶例: POP DS POP AX POP DATA2POPF,2-4 8086/8088 的堆栈举例,8、举例:假设(SS)=0422H ,(SP)=60H,(AX)=1234H,(DS)=4321H 执行 PUSH AXPUSH DS 问各单元数据是多少?(SP)=? 此时再执行 POP BX , 则(SP)=?(BX)=?,8086/8088 的堆栈举例图示意图,SP,SS,主存,堆栈段的段基址,SP,SP,5CH,5DH,5EH,5FH,60H,04220H,堆栈段,偏移量,第二章 概念区别,