当前位置: 首页 > news >正文

【汇编语言】栈及栈操作的实现

文章目录

    • 栈结构
    • 栈操作
    • 栈的小结

栈结构

  • 栈是一种只能在一端插入或删除的数据结构;
  • 栈有两个基本的操作:入栈和出栈;
    • 入栈:将一个新的元素放到栈顶;
    • 出栈:从栈顶取出一个元素;
  • 栈的操作规则:FILO(先进后出)
  • CPU提供的栈机制:
    • 8086 CPU提供相关的指令,支持用栈的方式访问内存空间;
    • 基于8086 CPU的编程,可以将一段内存当作栈来使用;
  • push入栈与pop出栈指令
    • push ax: 将ax中的数据送入栈中;
    • pop ax: 从栈顶取出数据送入ax
    • 以字为单位对栈进行操作
      在这里插入图片描述
      问题:
      1、CPU是如何知道一段内存空间被当作栈使用?
      2、执行push与pop的时候,如何知道哪个单元是栈顶单元?
      回答:
      8086CPU中,有两个与栈相关的寄存器:
      栈段寄存器SS: 存放栈顶的段地址
      栈顶指针寄存器SP:存放栈顶的偏移地址
      任何时刻,SS:SP 都指向栈顶元素。

在这里插入图片描述

栈操作

mov ax, 1000H ;栈顶的段地址存放至一般寄存器ax中
mov ss, ax ;将栈段地址传给ss寄存器
mov sp, 0010H ;将栈顶偏移地址存放至SP寄存器
mov ax, 001AH ;一般寄存器ax存放一个字 001AH
mov bx, 001BH ;一般寄存器bx存放一个字 001BH
push ax ;将寄存器ax的值压入栈,
push bx; 将寄存器bx的值压入栈

在这里插入图片描述

; 出栈操作
pop ax
pop bx

栈的小结

1、push、pop 实质上是一种内存传送指令,可以在寄存器和内存之间传送数据,与mov指令不同的是,push和pop指令访问的内存单元的地址不是在指令中给出的,而是由SS:SP指出的;
2、执行push和pop指令时,SP中的内容自动改变;
3、8086提供的CPU栈操作机制:

  • SS中存放栈顶段地址,SP存放栈顶偏移地址,入栈和出栈指令根据SS:SP指示的地址,按照栈的方式访问内存单元;
  • push指令的执行步骤:
    • 1、SP = SP - 2;
    • 2、 向SS:SP 指向的字单元中送入数据;
  • pop 指令的执行步骤:
    • 从SS:SP 指向的字单元中读取数据;
    • SP = SP + 2;
http://www.lryc.cn/news/132589.html

相关文章:

  • 【JavaEE】面向切面编程AOP是什么-Spring AOP框架的基本使用
  • SpringBoot+微信小程序奶茶在线点单小程序系统 附带详细运行指导视频
  • 【支付宝小程序】开发基础--文件结构教程
  • LLM 生成式配置的推理参数温度 top k tokens等 Generative configuration inference parameters
  • npm的镜像源和代理的查看和修改
  • IP库新增经过实践的Verilog 库
  • SLAM-VIO视觉惯性里程计
  • 分布式 RPC 框架入门
  • Spring boot与Spring cloud 之间的关系
  • 报名开启 | HarmonyOS第一课“营”在暑期系列直播
  • Apache DolphinScheduler 支持使用 OceanBase 作为元数据库啦!
  • matlab使用教程(17)—广度优先和深度优先搜索
  • CSerialPort教程4.3.x (2) - CSerialPort源码简介
  • 【数据结构OJ题】有效的括号
  • Java性能分析中常用命令和工具
  • JVM性能分析-jstat工具观察gc频率
  • mysql 查询报错 1267 - Illegal mix of collations
  • 【ARM】Day6
  • 深入理解Flink Mailbox线程模型
  • Docker搭建LNMP运行Wordpress平台
  • 10个常见渐变交互效果
  • [线程/C]基础
  • Spring Clould 负载均衡 - Ribbon
  • 活用DNS技术实现相同IP的不同端口映射不同域名
  • AutoHotkey:定时删除目录下指定分钟以前的文件,带UI界面
  • 一文学会sklearn中的交叉验证的方法
  • 【MySQL面试题(66道)】
  • CSSCI、北核期刊投稿指南(2023年更新)
  • 构建 NodeJS 影院微服务并使用 docker 部署它(02/4)
  • HTML <style> 标签