`
zht1933
  • 浏览: 224497 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

汇编6——栈

 
阅读更多

栈是一段计算机内存,遵循后进先出(LIFO)的原则。

 

8086CPU对栈的操作主要有入栈和出栈,分别对应PUSH 和 POP 指令。8086CPU的入栈和出栈操作都是以字为单位进行的。

段寄存器SS存放栈的段地址,SP寄存器存放栈的偏移地址,任意时刻,SS:SP指向栈顶元素。push指令和pop指令执行时,CPU从SS何SP种得到栈顶的地址。

 

push、POP指令的用法及功能:

PUSH/POP 寄存器/段寄存器/内存单元   ——表示把寄存器/段寄存器/内存单元中的内容压入栈中/从栈中取出。

PUSH AX  等价于  SP=SP-2; MOV [SS*16+SP], AX ;

POP  AX  等价于  MOV AX,[SS*16+SP];SP=SP+2;

 

栈顶超界问题

SS:SP始终指向栈顶元素,当栈为空的时候,也就不存在栈顶元素,此时SP指向栈的最底部单元的下面的单元,该单元的偏移地址为栈最底部的字单元的偏移地址+2.

栈顶超界发生在当栈满的时候再使用push指令入栈,或栈空的时候再使用pop指令出栈。

对8086CPU而言,CPU只知道栈顶的位置,却不知道栈空间有多大,所以栈顶超界问题是存在的,一旦发生,那么栈空间之外的代码、数据可能会被覆盖重写,将会引发一连串的错误。

分享到:
评论

相关推荐

    汇编课件——介绍详细的汇编知识

    在"汇编课件——介绍详细的汇编知识"中,您将获得以下关键知识点: 1. **基础知识**:了解汇编语言的基本概念,如指令集、寄存器、地址模式等。寄存器是CPU内部的高速存储单元,它们直接参与运算,而地址模式则决定...

    汇编言语——进栈出栈指令PPT学习教案.pptx

    * 堆栈的特点是不用定义变量,不必关心被保存的数据到底在栈的什么位置,只要保证出栈和进栈的对应关系即可。 * 堆栈的空闲区在栈顶所指位置以上,以下部分是已入栈的数据存放区。 4. 例子: * 例6.1展示了PUSH...

    汇编语言教程——学汇编必备

    《汇编语言教程——学汇编必备》是一个包含丰富的学习资源的压缩包,旨在帮助初学者和有经验的程序员深入理解和掌握汇编语言。汇编语言是计算机科学的基础,它是直接对应于机器语言的编程语言,对于理解计算机硬件...

    IBM汇编——简单计算器汇编源码

    ### IBM汇编——简单计算器汇编源码解析 #### 标题解读 标题“IBM汇编——简单计算器汇装源码”明确指出这是一段用于IBM汇编语言环境下的简单计算器程序的源代码。 #### 描述解读 描述部分进一步确认了这段代码的...

    云大——汇编期中试卷

    在“云大——汇编期中试卷”中,我们可以预见到涵盖了一系列关于汇编语言的基础知识。这些知识点可能包括: 1. **指令系统**:了解不同计算机架构(如x86或ARM)的指令集,如加法、减法、跳转、加载存储等基本操作...

    ibm——pc汇编复习题

    - 第7题:① 错误,不能直接向SS:BX+DI这样的内存位置写入数值1000H,因为它涉及到栈操作。 汇编语言是计算机底层编程的重要工具,理解其基本概念、寻址方式、指令系统以及相关标志位的影响对于编写有效的汇编程序...

    MIPS汇编完成小程序程序——10个无符号字数并从大到小进行排序(选择排序)

    1. **分配内存**:在栈上分配足够的空间来存储10个无符号整数。 2. **读取输入**:使用`syscall`指令读取用户输入的数字,可能需要`printf`和`scanf`系统调用来完成输入输出。 3. **循环**:用`loop`标签开始一个...

    汇编实验.rar

    4. 实验四:子程序调用——学习如何定义和调用子程序,掌握栈的使用,理解参数传递和返回值的处理。 5. 实验五:I/O操作——实现字符输入输出,理解BIOS中断调用,如INT 21H,进行键盘读取和屏幕打印。 6. 实验六...

    arm指令———汇编语言

    ### ARM指令——汇编语言详解 #### 一、概述 ARM汇编语言是针对ARM架构处理器的一种低级编程语言,广泛应用于嵌入式系统开发、移动设备操作系统底层开发等领域。ARM汇编语言允许开发者直接控制硬件资源,实现高效且...

    AT&T汇编语言--GCC下反汇编格式

    ### AT&T汇编语言——GCC下的反汇编格式详解 #### 一、概述 随着操作系统(OS)开发技术的发展,汇编语言依然是实现高效且精确控制底层硬件的重要手段之一。尤其在涉及性能敏感区域或需要精确控制内存占用时,汇编...

    汇编语言实现学生成绩排序

    本项目"汇编语言实现学生成绩排序"着重于使用低级编程语言——汇编语言来实现这一功能,这对于理解计算机底层工作原理以及优化性能有极大的帮助。 汇编语言是一种面向机器的编程语言,每条指令直接对应于计算机硬件...

    汇编语言程序设计上机考试历年卷.zip

    《汇编语言程序设计》是计算机科学领域中的一个重要分支,主要涉及计算机硬件和软件之间的桥梁——汇编语言的编程技术。福州大学作为一所知名的高等学府,在计算机科学教育方面具有深厚的底蕴,其针对汇编语言的课程...

    微机原理课程设计报告——汇编语言设计电话本

    本课程设计报告的核心目标是利用汇编语言设计一个简易电话本,它不仅能够存储电话号码信息,还具备查询功能,以此来加深学生对于微机原理和汇编语言知识的理解和应用。 ### 课题分析 在课题分析阶段,我们明确了...

    小精灵——微机接口

    【小精灵——微机接口】实验系列主要涵盖了两个方面的知识点:一是通过汇编语言实现计算阶乘的功能,二是使用汇编语言控制键盘输入和显示器文本显示。以下是详细的知识点解析: 1. **子程序参数传递**: 在实验...

    毕业设计——51+单片机TCP-IP+协议栈ZLIP源码.zip

    【标题】"毕业设计——51单片机TCP-IP+协议栈ZLIP源码.zip"是一个关于嵌入式系统开发的项目,主要聚焦在使用51系列单片机实现TCP/IP协议栈的ZLIP(ZLG Lite IP)源代码。这个设计涉及到的关键知识点包括: 1. **51...

    Linux0.11内核源码解读第一季——汇编启动部分

    这些文件,如"Linux0.11内核源码解读第一季——汇编启动部分"的各个PDF章节,将详细解释上述步骤,并提供源码级别的解析,帮助读者理解每一个指令和其背后的意图。 理解Linux 0.11内核的启动流程对于系统级程序员和...

    汇编语言入门第10章-模块化设计

    本章节将探讨“汇编语言入门第10章——模块化设计”,这对于理解和编写高效的汇编程序至关重要。模块化设计是软件工程中的一个重要概念,它有助于提高代码的可读性、可维护性和复用性。 模块化设计的核心思想是将...

    8080汇编手册

    标签“汇编代码”表明了本文档的核心主题——汇编语言。汇编语言是一种介于机器语言和高级语言之间的语言,它由一系列人类可读的指令组成,每条指令对应处理器的一条机器指令。学习汇编语言可以帮助程序员深入了解...

    常用的汇编语言指令集 适合初学者

    - `POPA` —— 从栈中取出数据并恢复所有寄存器的值。 ##### LEA, LDS, LES (加载地址) **用途**:将内存地址加载到寄存器中。 **语法**: - `LEA r, m` —— 将内存单元m的地址加载到寄存器r中。 - `LDS r, m` ...

Global site tag (gtag.js) - Google Analytics