8086汇编基础 push,pop指令执行时,sp怎么变 |
您所在的位置:网站首页 › 物理sp是什么 › 8086汇编基础 push,pop指令执行时,sp怎么变 |
首先需要说明的是栈属于满递减栈,即栈顶在高地址,栈底在低地址 push,指针向低处走。我向1000:0000处push数据,那么push之前,sp初-2=sp末。先sp-2,再写入 pop,指针向高处走。我要提取1000:0000处的数据。那么pop之前,sp=0002。先读取,后sp+2 也就是说 sp 始终指向了有效数据的位置。 一. 栈的执行过程下图: 该图注意如下: 1. 任意时刻, SS:SP指向栈顶元素 SS:存放栈的段地址;SP:存放栈的偏移地址; 2. 栈底的地址大. 3. 栈是空的是什么意思? 例如: 将10000H----1000FH这段空间当作栈, 初始状态栈是空的, 此时, SS=1000H, 那么SP= ? a. 栈底地址大. b. 任意时刻, SS:SP指向栈顶元素 所以, 栈底地址就是SS:SP=1000FH 也就是SS=1000H, SP=0FH 栈底就是栈的第一个元素, 那空栈就是SS=1000H, SP=10H.
二. PUSH的执行过程 请记住: 1. SP先减2, SS:SP指向新的栈顶(SP是向小的方向走的) 2. 把数据送入新的栈顶.
三. POP的操作过程 POP的过程就是与PUSH相反了 1. 把栈顶数据(SS:SP指向的数据)送入寄存器 2.SP增加2.
四. 栈的越界问题需要我们自己小心注意, CPU并没有机制来通知或者避免栈的越界. 五. PUSH与POP PUSH和POP指令可以在寄存器和内存之间传送数据, 格式如下 PUSH 寄存器 POP 寄存器 PUSH 内存单元 POP 内存单元 PUSH和POP指令实质是一种内存传送指令, 可以灵活运用. |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |