【汇编】学习笔记——第五篇

本文深入解析栈的基本概念及其在8086CPU中的应用,包括栈的特殊访问方式、操作规则以及如何通过PUSH和POP指令进行栈操作。详细解释了栈在内存空间中的作用,以及在不同数据类型下的存储方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【3.6主要摘要】
栈:
栈是一种具有特殊的访问方式的存储空间
特殊性:最后进入这个空间的数据,最先出去
栈有两个基本操作:入栈 和 出栈
入栈就是讲一个新的元素放到栈顶
出栈就是从栈顶取出一个元素
栈顶的元素总是最后入栈
栈的这种操作规则被称为:LIFO(last in first out  后进先出)


【3.7主要摘要】
8086CPU提供入栈和出栈指令,最基本的两个是PUSH(入栈) 和 POP(出栈)
8086CPU的入栈和出栈操作都是以字为单位进行的.
字型数据用两个单元存放,高地址单元存放高8位,低地址单元存放低8位.
8086CPU中,有两个寄存器,段寄存器SS和寄存器SP
   栈顶的段地址存放在SS中,偏移地址存放在SP中
   任意时刻,SS:SP指向栈顶元素
8086CPU中,入栈时,栈顶从高地址向低地址方向增长
栈空,SS:SP指向栈空间最高地址单元的下一个单元


【3.9主要摘要】
栈空间也是内存空间的一部分,它只是一段可以以一种特殊的方式进行访问的内存空间
push 和 pop指令格式:
push 寄存器
pop 寄存器
push 段寄存器
pop 段寄存器
push 内存单元
pop 内存单元
push、pop实质上就是一种内存传送指令,可以在寄存器和内存之间传送数据
栈顶的变化范围最大为:0~FFFFH


【关于段】
对于数据段,将它的段地址放在DS中,用mov、add、sub等访问内存单元的指令时,CPU就将我们定义的数据段中的内容当做数据来访问
对于代码段,将它的段地址放在CS中,将段中第一条指令的偏移地址放在IP中,这样CPU就将执行我们定义的代码段中的指令
对于栈段,将它的段地址放在SS中,将栈顶单元的偏移地址放在SP中,这样CPU在需要进行栈操作的时候,比如执行push、pop指令等,就将我们定义的栈段当做栈空间来使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值