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

news2024/10/7 16:26:34

文章目录

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

栈结构

  • 栈是一种只能在一端插入或删除的数据结构;
  • 栈有两个基本的操作:入栈和出栈;
    • 入栈:将一个新的元素放到栈顶;
    • 出栈:从栈顶取出一个元素;
  • 栈的操作规则: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.coloradmin.cn/o/904056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单晶高温合金收获阶段性应用成果,科研人员已开展定向凝固实验

根据央视报道,中国科学院金属研究所的科研人员对从太空带回的铝硅合金样品进行了初步的解剖分析工作,并计划用不同的实验方法和合金材料继续开展相关实验工作,以进一步探索重力在单晶高温合金凝固过程中的具体作用及相关机理。 值得关注的是&…

ORB-SLAM2学习笔记9之图像帧Frame

先占坑,明天再完善… 文章目录 0 引言1 Frame类1.1 成员函数1.2 成员变量 2 Frame类的用途 0 引言 ORB-SLAM2学习笔记8详细了解了图像特征点提取和描述子的生成,本文在此基础上,继续学习ORB-SLAM2中的图像帧,也就是Frame类&#…

自我管理篇--工作做完了,我能不能到点就下班

以上简历模板资源的排版可能不是最优,但工作经历可以借鉴 工作做完了,我能不能到点就下班? 答案:是,每个人都是自由的 ​ 工作完了,我能不能准点下班,背后真正的问题是:你有没有找到那件让你愿意…

【算法——双指针】LeetCode 11 盛最多水的容器

题目描述: 解题思路: 如图所示: 1、我们考虑相距最远的两个柱子所能容纳水的面积。宽度是两根柱子之间的距离8;高度取决于两根柱子之间较短的那个,即左边柱子的高度3。水的面积就是3824。 2、如果选择固定一根柱子&…

【Linux】传输层协议:UDP和TCP

争做西格玛男人 文章目录 一、UDP协议1.端口号2.理解UDP报头3.UDP的特点(面向数据报,全双工) 二、TCP协议1.理解TCP报头某些TCP的策略1.1 TCP报头字段(TCP的黏包问题)1.2 网络协议栈和linux系统的联系(以p…

SpringBoot + MyBatis-Plus构建树形结构的几种方式

1. 树形结构 树形结构,是指:数据元素之间的关系像一颗树的数据结构。由树根延伸出多个树杈 它具有以下特点: 每个节点都只有有限个子节点或无子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点&a…

2023国赛数学建模A题思路模型代码汇总 高教社杯

本次比赛我们将会全程更新思路模型及代码,大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社…

econml介绍

EconML简介 EconML: A Python Package for ML-Based Heterogeneous Treatment Effects Estimation EconML是一个通过机器学习方法从观察数据中估计heterogeneous treatment effects的Python包。该软件包是微软研究院ALICE项目的一部分,目的是将最新的机器学习方法…

8.5.tensorRT高级(3)封装系列-基于生产者消费者实现的yolov5封装

目录 前言1. yolov5封装总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 tensorRT 高级-基于生产者消费者实现的yolov5封装…

日撸java_day63-65

文章目录 Booster代码运行截图 Booster 代码 package machineLearning.adaboosting;import weka.core.Instances;import java.io.FileReader; import java.util.Arrays;/*** ClassName: WeightedInstances* Package: machineLearning.adaboosting* Description:Weighted inst…

计算机提示mfc120u.dll缺失(找不到)怎么解决

在计算机领域,mfc120u.dll是一个重要的动态链接库文件。它包含了Microsoft Foundation Class (MFC) 库的特定版本,用于支持Windows操作系统中的应用程序开发。修复mfc120u.dll可能涉及到解决与该库相关的问题或错误。这可能包括程序崩溃、运行时错误或其…

DAY23

题目一 给定一个全是小写字母的字符串str.删除多余字符,使得每种字符只保留一个,并让最终结果字符串的字典序最小 str "acbc", 删掉第一个c, 得到"abc", 是所有结果字符串中字典序最小的。str "dbcacbc…

Python入门教程 | Python简介和环境搭建

Python 简介 Python是一种高级编程语言,由荷兰人Guido van Rossum于1991年创建。它以其简单易学、可读性强和丰富的生态系统而受到广泛喜爱。它被广泛应用于各个领域,包括Web开发、科学计算、数据分析、人工智能等。 Python的特点 简洁易读&#xff1a…

idea新建web项目

步骤一 步骤二 步骤三 新建两个目录lib、classes 步骤四 设置两个目录的功能lib、classes 步骤五 发布到tomcat

docker项目实战

1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘 1)拉取mysql:5.6和owncloud镜像 [rootmaster ~]# docker pull mysql:5.6 5.6: Pulling from library/mysql 35b2232c987e: Pull complete fc55c00e48f2: Pull complete 0030405130e3: Pull compl…

MetaMask Mobile +Chrome DevTools 调试Web3应用教程

注:本教程来源网络,根据项目做的整理 写好了WEB3应用,在本地调试用得好好的,但是用钱包软件访问就报莫名的错,但是又不知道是什么原因,排查的过程非常浪费时间 。 因此在本地同一局域网进行调试就非常有必要…

河北人事档案管理系统

河北人事档案管理系统是一个集数字化管理、高效服务、安全可靠于一体的人事档案管理平台,可以集中管理机关事业单位人事档案、农村党员档案、参保职工档案、流动人才档案等,并实现高效、便捷的查阅和调阅服务。 河北人事档案管理系统的建设主要是为了更好…

【C++】模拟实现哈希(闭散列和开散列两种方式)

哈希 前言正式开始map、set 与 unordered_map、unordered_set 的不同遍历结果不同查找速度不同 哈希闭散列概念介绍模拟实现字符串等自定义类型找位置字符串哈希算法二次探测 开散列概念介绍模拟实现存储自定义类型哈希表大小设置为素数 前言 在C98中,STL提供了底层…

论文学习——FOLEY SOUND SYNTHESIS AT THE DCASE 2023 CHALLENGE(声音生成介绍)

文章目录 引言正文AbstractIntroduction问题 2 Problem And Task Definition3. Official Dataset And Baseline第一部分问题 4. Evaluation问题 4.1 Step 1:Objective Evaluation问题 4.2 Step 2: Subjective Evaluation问题 4.3 Execution(非重点&#…