8086汇编基础 push,pop指令执行时,sp怎么变

您所在的位置:网站首页 物理sp是什么 8086汇编基础 push,pop指令执行时,sp怎么变

8086汇编基础 push,pop指令执行时,sp怎么变

2024-02-09 23:36| 来源: 网络整理| 查看: 265

首先需要说明的是栈属于满递减栈,即栈顶在高地址,栈底在低地址

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