栈究竟是什么?

2023-05-16

我们都知道“栈”这个数据结构,它最大的特定就是“后进先出”,那么就会有一个问题?真的存在天生就是“后进先出”的数据结构么?答案是没有!

 

结论栈的“后进先出”的规则是由人为规定的。

栈是由两个寄存器组成的:

一个是叫SS寄存器,里面存放的是栈的栈顶的段地址,

一个是叫SP寄存器,里面存放的是偏移地址,也就是栈顶指针。

后进先出:

 注:

末尾H代表十六进制

ss+sp 为 段地址x16 + 偏移地址 = 物理地址,这里想了解的话,可以去看 王爽老师的《汇编语言》  pdf链接放在文末了。

推介王爽老师《汇编语言》这里讲的更详细,我这里只是看完之后的一丢丢感悟。

 我们可从图上观察到

此时,sp指针地址 = 000EH,我们通过ss+sp得出它在栈中内存单元的地址。

所有我们就可以得出来结论

  • 如果我们让sp指针一开始为00FH那么通过ss+sp就可以放在这段内存单元的最下面
  • 之后,再往栈的存储单元存值,我们就只能放在00EH,依次从下往上进行访问存储单元
  • 这样就实现了后进先出

王爽《汇编语言》pdf

提取码:0000

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

栈究竟是什么? 的相关文章

  • 从零开始配置sublimetext(c++环境)

    安装sublime text Sublime Text Text Editing Done Right 进入官网安装 xff0c 自己选择一个路径安装即可 安装clang 43 43 编译器 clang 43 43 不知道可以查一下 xff
  • linux--磁盘管理

    目录 x1f95d 磁盘基本管理 x1f36d 添加磁盘 x1f36d 文件系统 x1f36d 磁盘分区方式 x1f349 MBR x1f349 GPT x1f36d 基本命令 x1f95d 磁盘配额 x1f336 xfs配额 x1f336
  • CSP-CCF 202112-1 序列查询 C语言 满分

    include lt stdio h gt include lt string h gt int main int n N i A B 61 0 scanf 34 d d 34 amp n amp N int sum 61 0 for i
  • 【Windows常用快捷键,建议收藏】

    Windows常用快捷键 xff0c 建议收藏 作为一名出色的程序员 xff0c 亦或者是白领工作者 xff0c 乃至正要步入社会的青年们 xff0c 以下盘点的一些快捷键 xff0c 也许能让你的日常生活工作更加便捷 高效 基本快捷方式
  • 7-1 串的模式匹配(kmp算法) 知识点+练习

    给定两个由英文字母组成的字符串 String 和 Pattern xff0c 要求找到 Pattern 在 String 中第一次出现的位置 xff0c 并将此位置后的 String 的子串输出 如果找不到 xff0c 则输出 Not Fo
  • 栈和队列(队列)_贪吃蛇

    设计一个顺序循环队列 xff0c 长度len为10 xff0c 队列中有n个元素 xff08 1 n lt 10 xff09 选择任意一个元素为蛇的头部 xff0c 队尾元素为蛇的尾部 贪吃蛇开始移动吃他前面的元素 xff0c 并追加至蛇的
  • Keil 烧录程序后没有执行

    一 概述 Kell烧录程序成功 xff0c 但是控制板并没有执行 可能有如下原因 二 原因分析及解决办法 1 Reset and Run 现象 xff1a 在这种情况 xff0c 程序烧录进去后 xff0c 并不会自动执行 xff0c 但是
  • 远程文件包含实操

    这是我第一次尝试用远程文件包含解题 xff0c 没想到成功了 首先 xff0c 在服务器上传一个木马文本 老规矩 xff0c user ini文件搞上去 xff0c 指向1 txt 1 txt里直接包含一开始上传木马文本文件的地址 然后就可
  • 输入一个0到999可带小数的数字,输出其个十百位数

    多组输入 int 表达式 xff09 指将表达式中的结果强制转换成整型 include lt stdio h gt int main double a int ge shi bai while scanf 34 lf 34 amp a ba
  • 计算2X4X6X...X100的值(上面是错解,附正解)

    include lt stdio h gt int main int a 61 2 n 61 1 sum 61 1 while n lt 61 50 n 61 n 43 1 sum 61 sum a a 61 a 43 2 printf 3
  • while循环输出100-200的所有整数

    include lt stdio h gt int main int n 61 100 while n lt 61 200 printf 34 d t 34 n n 43 43 return 0
  • 关于如何输出百分号和0.0f%的格式化字符的理解,输出结果为2.684%

    include lt stdio h gt int main int a 61 10433 b 61 280 float f1 f1 61 b 1 0 a 当乘以1 0后 xff0c 才能使算出f1是想要的结果 xff08 0 026838
  • 输入自然数后逆序输出这个数

    include lt stdio h gt int main int a scanf 34 d 34 amp a while a a不等于零时执行此循环 printf 34 d 34 a 10 a 61 a 10 return 0
  • LINUX最小系统安装过程中的Partition Disks分配问题

    问题详细描述 xff1a 在我们安装Debian最小系统 xff08 即双系统windows和linux xff09 过程中在进行内存分配时 xff0c 由于系统需要我们很多时候都得选用英文系统导致可能存在 xff1a 看不懂 不知道怎么进
  • mybatis-plus自定义多表分页查询

    mybati plus多表分页查询 首先编写VO类 xff0c VO类包含了要查询的字段值 xff0c 现在有如下几个表 blog表 span class token annotation punctuation 64 Data span
  • 【Docker学习笔记】2.Debian Docker 安装及CentOS Docker 安装

    前言 本章介绍Debian Docker 安装和CentOS Docker 安装 Debian Docker 安装 Docker 支持以下的 Debian 版本 xff1a 巴斯特 10拉伸 9 xff08 稳定 xff09 拉斯比亚拉伸
  • 超详细的操作符讲解

    操作符的分类 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 1 算术操作符 span class token operator 43 span span class token o
  • Ubuntu 安装中文输入法

    请注意命令中不应该的空格可能导致命令不合法 xff01 一 检查 fcitx 框架 首先 xff0c 要安装中文输入法 xff0c 必须要保证系统上有 fcitx fcitx是一个以 GPL 方式发布的输入法框架 xff0c 安装 fcit
  • 快速幂取模简单用法

    关于快速幂的用法本小白还是思索了挺久的 xff08 因为我不太聪明哈 xff09 xff0c 但是学会了就觉得挺好理解的 下面我用一道例题来简单讲一下它的用法 xff0c 希望能帮你轻松get到 xff01 xff01 例题 xff1a 快

随机推荐

  • robomaster视觉规则细谈

    目录 攻击与检测 弹丸参数 增益点增益 升级效果 击打检测 涂装要求 裁判系统 机器人端各模块 赛事引擎各部分 客户端 服务器 能量机关 小能量机关 大能量机关 算法归纳 攻击与检测 弹丸参数 如图所示 xff0c 赛场中我们使用的弹丸有两
  • 关于如何用python下载文件

    先贴上源代码 xff1a GitHub zhangbaji PythonDownloader 这是一个Python下载http文件的事例 xff0c 只不过目前还无法获取动态文件的文件名 https github com zhangbaji
  • Java打印杨辉三角形

    span class token keyword public span span class token keyword class span span class token class name Taks02 span span cl
  • 第二章 利用ffmpeg把rgb转mp4

    本文章介绍ffmpeg基本使用流程 1 创建编码器 通过枚举id选择编码器类型 AVCodec avcodec find encoder enum AVCodecID id enum AVCodecID id 通过枚举选择编码器类型 AV
  • 栈的相关题目以及出栈时的规律

    今天做了两个有关栈的题目 xff0c 都可以用到出栈时的规律来解题 那么问题来了 xff0c 出栈时的规律是什么呢 xff1f 规律如下 xff1a 已知栈的输入序列是1 2 3 n xff0c 输出序列是a1 a2 ai an 然后我们任
  • Python 中 jieba 库

    文章目录 jieba库一 简介1 是什么2 安装 二 基本使用1 三种模式2 使用语法2 1 对词组的基本操作2 2 关键字提取2 3 词性标注2 4 返回词语在原文的起止位置 jieba库 一 简介 1 是什么 xff08 1 xff09
  • 【栈与队列】之栈的顺序存储(图文详细介绍!!)

    前言 xff1a 本章基于 大话数据结构 和王卓老师的视频内容 xff0c 为刚接触数据结构的初学者提供一些帮助 x1f495 如果我的文章对你有帮助 xff0c 点赞 收藏 留言都是对我最大的动力 目录 4 1 栈的定义 4 2 栈的抽象
  • 【C语言技能树】程序环境和预处理

    Halo xff0c 这里是Ppeua 平时主要更新C语言 xff0c C 43 43 xff0c 数据结构算法 感兴趣就关注我吧 xff01 你定不会失望 x1f308 个人主页 xff1a 主页链接 x1f308 算法专栏 xff1a
  • Java中输出所有的水仙花数

    问题描述 打印出所有的 水仙花数 xff0c 所谓 水仙花数 是指一个三位数 xff0c 其各位数字立方和等于该数本身 例如 xff1a 153是一个 水仙花数 xff0c 因为153 61 1的三次方 43 5的三次方 43 3的三次方
  • pip3 设置阿里云

    pip3 install r requirements txt 报超时 xff0c 于是设置阿里云作为安装源 xff1a pip3 config set global index url http mirrors aliyun com py
  • 输入一个数组,将其逆序输出

    今天参加了校内的计算机技能大赛 xff0c 找到了一道较为简单的题 xff0c 就是 将数组逆序输出 下面我将详细讲解一下代码思路 xff0c 好了 xff0c 老规矩 xff0c 先上代码 xff01 include lt bits st
  • 虚拟机中Ubuntu安装了anaconda3无法使用conda

    ubuntu 中安装了 anaconda3 但是无法 使用 conda 只会出现这句话 conda 未找到指令 我找了一些办法 xff0c 有一个有用的 xff1a 8条消息 Ubuntu下使用Anaconda3 出现conda 未找到命令
  • ubuntu配置nfs时Failed to start nfs-server.service: Unit nfs-server.service not found.

    在ubuntu系统中配置nfs时出现Failed to start nfs server service Unit nfs server service not found 原因 xff1a 新装的ubuntu系统并未安装nfs 应使用su
  • 【经验分享】使用Keil5烧录代码遇到的问题及解决方法

    目录 一 前言 二 所遇问题及解决方法 1 首先最基本的Options for target 编辑的设置不用多说 xff0c 下载器根据自己所使用的类型进行选择 我使用的是CMSIS DAP 2 第二种可能出现的问题如下 SWD JTAG
  • c++ delete与析构函数的注意点

    问题 xff1a 我们都知道析构函数在类对象作用域结束时自动调用 xff0c 但这个规则适合基本类型 xff0c 但不适合delete函数 原因 xff1a 如果对象是new运算符动态创建的 xff0c 如果最后没有调用delete xff
  • 超详细!JAVA实现顺序表类

    Seqlist类 增 删 改 查 xff0c 判断是否为空 public class Seqlist lt T gt protected int n 顺序表元素个数 protected Object element 顺序表元素 public
  • 超详细!java实现链表

    Node lt T gt 结点类 public class Node lt T gt 结点类 数据域 xff1a data 存取域 xff1a next public T data 数据域 public Node lt T gt next
  • 超详细!java实现String部分方法

    java的String功能特点 Sring字符串是一个类 xff0c 属于引用数据类型 xff0c 提供比较大小 连接串等方法 String的对象是不是一个字符数组 xff0c 不能以数组下标格式s i 进行操作 xff0c 这和c c 4
  • 关于Java 的throw的一些注意的小点

    throw throw是程序中明确引发异常 xff0c 一旦执行到throw xff0c 程序就会被中断 xff0c 下面的代码就不会被执行 xff01 结论 xff1a 在编写代码阶段 xff0c 即使不运行程序 xff0c throw下
  • 栈究竟是什么?

    我们都知道 栈 这个数据结构 xff0c 它最大的特定就是 后进先出 xff0c 那么就会有一个问题 xff1f 真的存在天生就是 后进先出 的数据结构么 xff1f 答案是没有 xff01 结论 xff1a 栈的 后进先出 的规则是由人为