堆栈段在实模式和保护模式下的工作方式相同,下面我们只介绍在实模式下的工作方式:
其中SS 堆栈段寄存器,用来存储堆栈段的初始地址;SP 堆栈指针寄存器,用来存储堆栈段的栈顶偏移量。
堆栈段初始化的工作如下:

SS定位到堆栈段的起始地址(基地址,低地址),栈底位于堆栈段的有效地址的最末端(高地址)。SP初始化为堆栈段的大小,SS:SP永远指向堆栈的栈顶。在初始化时,SS:SP指向堆栈段的最高地址(此时,栈底和栈顶都指向这一内存地址)。随着压入元素,SP不断变小,进而SS:SP代表的栈顶地址变小,不在等于栈底地址,而是逐渐靠近堆栈段的起始地址,当SP为0时,SS:SP代表的栈顶地址与SS:0000代表的堆栈段的起始地址相等,进而确定栈满,CPU也是通过判断SP <0来检验堆栈是否溢出的。

使用该堆栈段,执行下面一段代码:
mov ax,1234H
push ax

从这里我们可以更清楚的看出来,SS指向的是堆栈段的起始地址,SS:SP指向的是栈顶,栈底为高地址。

为了更清楚的理解堆栈段的工作方式,现在我们来看下面的题目:
如果一个堆栈从地址3250H:0000H开始,它的最后一个字的偏移地址为0100H,SP的内容为0052H,问:
1 栈顶地址是什么?
2 栈底地址是什么?
3 存入数据1234H和5678H后,SP的内容是多少?

答案:
1 堆栈的最高地址叫栈底,堆栈指示器SP总是指向栈顶。
栈顶地址=(SS) × 10H + (SP)=3250H × 10H + 0052H=32552H
2 栈底地址=(SS) × 10H + 0100H = 32600H
3 8086CPU中堆栈存取必须以字为单位。存入数据1234H和5678H后,即两个字压入堆栈后,SP减4,SP的内容为:(SP) - 字数 × 2=0052H - 2 × 2=004EH。SS的内容不变。

第三章--堆栈段的工作方式相关推荐

  1. dubbo学习笔记 第三章简介dubbo的工作原理

    一.工作原理图 这是dubbo官网的关于dubbo工作原理,其中最核心的应该是Registry注册中心,Monitor,Consumer消费者和Provider服务提供者四个部分,注册中心关系这消费者 ...

  2. 《数据结构与算法基础 严蔚敏版》第三章 堆栈与队列

    链接:https://pan.baidu.com/s/1z-kFKiNaezO0k2BWQ8l1Hw  提取码:asdf 1.堆栈 (1)堆栈的概念 栈:只允许在一段进行插入或删除操作的线性表 栈顶: ...

  3. (3)riak_core系统的工作方式

    三.riak_core系统的工作方式 从原理上讲,riak_core通过一致性hash算法将数据随机均匀的分布在一个环上,对这些数据的操作可以并发的进行,因此riak_core本质上还是一个数据并行的 ...

  4. 计算机组成原理三种译码方式,计算机组成原理第三章存储系统

    第三章存储系统 3.1存储器的构成 二.六管静态MOS存储单元线路 存储机理:利用双稳态触发器保存信息 T1通.T2止,存0 T1止.T2通.存1 分析:1保持信息:不打扰,不送地址选通信号:2读出: ...

  5. dcmtk在PACS开发中的应用(基础篇) 作者:冷家锋 第三章 工作列表(Work List)(一)...

    第三章 工作列表( Work List )(一) 1 .目的 在工作站上登记患者,影像设备通过 DICOM 标准中的 Work List 获取登记的患者信息. 2 .实验平台 Windows XP P ...

  6. dcmtk在PACS开发中的应用(基础篇) 第三章 工作列表(Work List)(一)( BY 冷家锋)

    觉得对您有帮助,欢迎打赏(打赏码在文末),欢迎切磋. 博客不常来,评论不一定都能看到,看到了我会尽力回复(更新于2019年7月26日) 第三章 工作列表(Work List)(一) 1 .目的 在工作 ...

  7. 并行接口电路8255A的基本使用——三种工作方式的时序图的具体讲解

    文章目录 概述 内部结构图和具体引脚功能 端口A 端口B![在这里插入图片描述](https://img-blog.csdnimg.cn/20210607164952661.png) 端口C 与处理器 ...

  8. LVS三种工作方式八种算法

    一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...

  9. 服务器维护翻译,TRADOS在线帮助第三章 用基于服务器的翻译记忆工作

    第三章 用基于服务器的翻译记忆工作 3.1 概述 3.1.1 TRADOS TM Server.TRADOS GXT和TRADOS TeamWorks是专业化系统,旨在满足多用户组的要求. Trans ...

最新文章

  1. Pytorch中的5个非常有用的张量操作
  2. javascript、jQuery的扩展方法,扩展实例展示代码
  3. python能做软件开发吗-学习Python软件开发能做什么?
  4. mac安装mysql mysql命令找不到_MacBook通过Homebrew安装mysql
  5. Alpine Linux:从漏洞发现到代码执行
  6. 微信公众号开发获取code
  7. 天思ERP软件常见问题解决方案
  8. Codeforces-1684 D: Traps 【贪心、排序】
  9. 前装车联网常见术语解释
  10. 总结DH密钥协商(会话密钥)
  11. linux 根目录变为只读了,Linux系统重启或无故变为只读造成网站无法正常访问的简单临时的做 根目录只读不能写处理:...
  12. bootstrap table表格高度随电脑分辨率变化
  13. 质控三张图 gaochao ards 多个表型写成循环
  14. 怎样玩魔方,魔方口诀,魔方玩法
  15. python:命名空间学习
  16. 高通芯片联机读取修改串码 meid ESN wifi 蓝牙 sn等参数的操作解析{二}
  17. 灰狼(GWO)算法(附完整Matlab代码,可直接复制)
  18. 华为智慧屏 鸿蒙UI 适配荣耀,鸿蒙OS首秀 荣耀智慧屏发布,仅3799元起
  19. IEEE754 浮点数的表示方法
  20. oracle去除字段里的汉字

热门文章

  1. UVA11137(立方数之和)
  2. 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | dvmDexFileOpenPartial | dexFileParse | 脱壳点 | 获取 dex 文件在内存中的首地址 )
  3. 【C 语言】内存四区原理 ( 常量区示例 | 不同函数返回的相同字符串的指针地址相同 )
  4. 【Windows 逆向】OD 调试器工具 ( OD 工具简介 | OD 工具与 CE 工具对比 )
  5. 【Android 逆向】substrate 框架 ( substrate 简介 | substrate 相关文档资料 )
  6. 【错误记录】Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( No module named ‘numpy‘ )
  7. 【Android 安装包优化】使用 lib7zr.a 静态库处理压缩文件 ( 交叉编译 lib7zr.a 静态库 | 安卓工程导入静态库 | 配置 CMakeLists.txt 构建脚本 )
  8. 【计算理论】计算复杂性 ( 无向图独立集问题 | 独立集问题是 NP 完全问题证明思路 | 证明独立集问题是 NP 完全问题 )
  9. ActiveState Komodo IDE v5.2.1.34168 最新版for Linux/Mac OS/Windows 全5大平台
  10. 《毅力-如何培养自律的习惯》读后感