口碑好的微信网站建设,HTML网站建设课程,wordpress个人博客系统实现,WordPress美化评论通知邮件样式我们知道push指令是将数据送入栈中#xff0c;pop指令是将数据从栈顶取出来#xff0c;8086CPU的入栈和出栈操作都是以字为单位的 比如说将10000H-1000FH这段内存当做栈使用 CPU是通过CS、IP中存放的段地址和偏移地址来知道当前要执行的指令#xff0c;通过DS和[address]来…我们知道push指令是将数据送入栈中pop指令是将数据从栈顶取出来8086CPU的入栈和出栈操作都是以字为单位的 比如说将10000H-1000FH这段内存当做栈使用 CPU是通过CS、IP中存放的段地址和偏移地址来知道当前要执行的指令通过DS和[address]来访问内存数据。在8086CPU中有两个寄存器段寄存器SS和寄存器SP栈顶的段地址存放在SS中偏移地址存放在SP中。并且在任意时刻SSSP指向栈顶元素。POP和PUSH指令执行时CPU从SS和SP中得到栈顶的地址。
当执行push指令时由两步完成
SPSP-2SSSP指向当前栈顶前面的单元以当前栈顶前面的单元为新的栈顶将数据送入SSSP指向的内存单元处SSSP此时指向新栈顶 POP指令的执行过程将数据取出来SPSP2SSSP指向当前栈顶下面的单元以当前栈顶下面的单元为新的栈顶 再这里再说一遍8086的入栈和出栈都是以字为单位的这就是为什么SP不是加2就是减去2