栈机制与pop、push指令|汇编语言(王爽版)学习笔记 第三章 寄存器【内存访问】(3)

3.6 栈

栈是一种具有特殊的访问方式的存储空间。它的特殊性就在于,最后进入这个空间的数据,最先出去

栈有两个基本的操作:入栈和出栈。

  1. 入栈:将一个新的元素放到栈顶
  2. 出栈:从栈顶取出一个元素

栈顶的元素总是最后入栈,需要出栈时,又最先被从栈中取出。即LIFO(Last In First Out)


3.7 CPU提供的栈机制

  • CPU中都有栈的设计
  • 8086CPU提供相关的指令来以栈的方式访问内存空间
  • 这意味着,我们在基于8086CPU编程的时候,可以将一段内存当作栈来使用
  • 8086CPU提供入栈和出栈的指令:PUSH(入栈)、POP(出栈)
  • push ax:将寄存器ax中的数据送入栈顶
  • pop ax:从栈顶取出数据送入ax
  • 8086CPU的出入栈操作都是以字为单位进行的。

疑问1:CPU如何知道当前要执行的指令所在的位置?
CS、IP中存放着当前指令的段地址和偏移地址
疑问2:CPU如何知道哪个单元是栈顶单元?
段寄存器SS 存放栈顶的段地址
寄存器SP 存放栈顶的偏移地址
任何时刻,SS:SP指向栈顶元素

push指令的执行过程

push ax
(1)SP=SP-2;
(2)将ax的内容送入SS:SP指向的内存单元处,SS:SP此时指向新栈顶
在这里插入图片描述

问题3.6

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值