数据寻址——堆栈寻址

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据寻址——堆栈寻址相关的知识,希望对你有一定的参考价值。

堆栈寻址

堆栈寻址:操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址。

堆栈是存储器(或专用寄存器组)中一块特定的按“后进先出(LIFO)”原则管理的存储区,该存储区中被读/写单元的地址是用一个特定的寄存器给出的,该寄存器称为堆栈指针(SP)。

如下图所示:
在这里插入图片描述

采用堆栈寻址完成一次加法的过程

记栈顶单元为Msp,

POP ACC		(Msp) → ACC
			(SP)+1 → SP
POP X		(Msp) → X
			(SP)+1 → SP
ADD Y		(ACC)+(X) → Y
PUSH Y		(SP)-1 → SP  (Y) → Msp

在这里插入图片描述

两种堆栈方式

栈顶在小地址方向(例如上面例子)

出栈: (Msp) → ACC
	  (SP)+1 → SP
入栈: (SP)-1 → SP
	  (Y) → Msp

栈顶在大地址方向

出栈: (Msp) → ACC
	  (SP)-1 → SP
入栈: (SP)+1 → SP
	  (Y) → Msp

分类

硬堆栈

用特定的寄存器来存储数据,在其中进行入栈,出栈操作

在这里插入图片描述
但是这样成本会很高

软堆栈

在主存中找一段地址来存储数据,在其中进行入栈,出栈操作
在这里插入图片描述

另外

堆栈还可用于函数调用时保存当前函数的相关信息

小结

在这里插入图片描述

以上是关于数据寻址——堆栈寻址的主要内容,如果未能解决你的问题,请参考以下文章

esp寻址ebp寻址

指令系统——数据寻址

指令系统——数据寻址

5.2-寻址方式

ARM指令

计算机组成原理期末救急--下