3.3 ss-sp寄存器,栈的push和pop指令

汇编语言

1. 栈

  • 栈是一种具有特殊的访问方式的存储空间
  • 它的特殊性就在于,最后进入这个空间的数据,最先出去。即先进后出

1.1 栈的基本操作

  • 入栈:入栈就是将一个新的元素放到栈顶
  • 出栈:出栈就是从栈顶取出一个元素
  • 栈顶的元素总是最后入栈,需要出栈时又最先被从栈中取出
  • LIFO(Last In First Out),后进先出

2. CPU提供的栈机制

  • push(入栈)和pop(出栈)

在这里插入图片描述

  • 大数据即高位在栈下面,小数据即地位在栈上面
  • 任意时刻,ss:sp指向栈顶元素

在这里插入图片描述

//使ss:sp初始指向1000:0010即10000h
mount c d:masm
c:
debug
r
mov ax,0123		//ax = 0123h
push ax		//把ax的数据压入栈中,大数据01在下面,小数据23在上面,此时ss:sp 指向1000EH
mov bx,2266		//bx = 2266
push bx		//把bx的数据压入栈中,大数据22在下面,小数据66在上面,此时ss:sp 指向1000CH
mov cx,1122		//cx = 1122
push cx		//同上面两步,此时ss:sp指向1000AH,即push指令时,sp = sp - 2
pop ax		//把栈顶的元素弹出并且赋值给ax,此时ax = 1122h,ss:sp指向1000CH
pop bx		//同上,此时bx = 2266h,ss:sp指向1000EH
pop cx		//此时cx = 0123h,ss:sp指向10010h。即pop指令时,sp = sp + 2r ss		//让ss:sp指向栈顶元素
1000
r sp
0010

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 栈顶超界问题

  • 当栈满的时候再使用push指令入栈,或栈空的时候再使用pop指令出栈,都将发送栈顶超界问题
  • 栈顶超界是危险的
  • 我们自己要操心栈顶超界的问题,要根据可能用到的最大栈空间,来安排栈的大小,防止入栈的数据太多而导致的超界
  • 执行出栈操作的时候也要注意,以防栈空的时候继续出栈而导致的超界

4. push和pop也可以对内存进行操作

  • push和pop指令是可以在寄存器和内存之间传送数据的
mov ax,1000
mov ds,ax		//内存单元的段地址要放在ds中
push [0]		//将1000:0处的字压入栈中
pop [2]			//出栈,出栈的数据送入1000:2处

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

指令执行时,CPU要知道内存单元的地址,可以在push、pop指令中只给出内存单元的偏移地址,段地址在指令执行时,CPU从ds中取得

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/747389.shtml

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

相关文章

C++ 智能指针的正确使用方式:unique_ptr VS shared_ptr

在实际的使用过程中,很多人都会有这样的问题: 不知道智能指针的具体使用场景无脑只使用 shared_ptr认为应该禁用 raw pointer(裸指针,即 Widget * 这种形式),全部使用智能指针 本文将从这几方面讲解智能指针: 智能指…

Docker简单认识

目录 一、Docker概述 二、容器技术 2.1 容器与虚拟机的比较 2.2 容器和应用程序的比较 三、Docker和容器的关系 四、Docker和操作系统 五、总结 一、Docker概述 Docker 是一个开源的平台,用于开发、运送和运行应用程序。通过使应用程序与底层系统隔离&#x…

过滤器Filter和数组的filter()方法

在使用vue中的过滤器中的时候忽然想到数组中的fiter()方法,不禁想总结一下两者的用法和实现。 过滤器 在 Vue.js 中,过滤器是用于在模板中对数据进行格式化的一种机制。过滤器通过管道符 | 连接到表达式,例如: {{ message | filt…

服务雪崩,熔断,降级,限流之理解

服务雪崩是现状。 通过限流,熔断,降级等方式可以处理雪崩的问题。 服务限流,主要是为了保护服务的正常运行,大量请求过来,忙不过来,起码服务还能用。 服务熔断,是因为大量请求大多数失败或者…

机器学习常用框架

机器学习是人工智能的一个重要分支,它通过让计算机系统利用数据自我学习来改进任务执行的能力。在机器学习领域,有许多成熟的框架被广泛使用,这些框架提供了构建和训练机器学习模型的工具。以下是一些常用的机器学习框架: Tensor…

第2章 信息技术基础

本章学习要点 全面了解医院信息系统建设所涉及的主要信息技术以及这些技术的应用情况。 计算机与网络、信息技术与信息系统、数字媒体与数据存储技术、条形码(二维码)、RFID技术、云计算、APP技术 1.XML 可扩展标记语言与Access,Oracle和SQL Server等数据库不同…

【机器学习-01】机器学习基本概念与建模流程

机器学习的过程本质上是一个不断通过数据训练来提升模型在对应评估指标上表现的过程。在此过程中,为模型提供有效的反馈并基于这些反馈进行持续的调整是至关重要的。只有当这个过程顺利进行时,模型才能得到有效的训练,机器才能真正实现学习。…

修改vscode中代码的注释颜色

打开C盘、进入user目录,然后依次打开以下图片中的文件夹,在指定的文件中进行修改。 1. 2. 3. 4. 5. 6.

2049.不容易系列之(4)——考新郎

2048的升级 当nm时则全排错,与上题一样 当n>m时,则有n-m个是排对的,剩下m个全错 import java.util.*;public class Main {public static void main(String[] args) {Scanner scannernew Scanner(System.in);int num scanner.nextInt()…

解决ubuntu 22.04新内核6.5.0-15无法编译NVIDIA显卡驱动

这里的新内核应该包括6.5.*系列的 文章目录 遇到的问题: 遇到的问题: 今天我在安装NVIDIA显卡驱动发现了一个问题,主要日志如下所示: make[3]: *** [scripts/Makefile.build:251: /tmp/selfgz1310041/NVIDIA-Linux-x86_64-550.5…

昂贵的日用品和廉价的奢侈品

不同消费支出的心理账户之间具有非替代性 不同的消费支出分置在不同的心理账户中,不同消费心理账户的开支会受到所在账户预算约束的影响。 心理账户的预算控制机制 人们在分配总预算时,会将预算分门别类地分配到具体的心理账户中去。对于所有超过心理账…

【Docker】apisix 容器化部署

APISIX环境标准软件基于Bitnami apisix 构建。当前版本为3.8.0 你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,可以从如下环境获取 配置文件地址: https://gitee.com/qingplus/qingcloud-platform qi…

Python+requests+excel 接口自动化测试框架

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、接口自动化测试框架 二、工程目录 三、Excel测试用例设计 四、基础数据base 封装post/get&a…

centos7磁盘管理,lvm挂载、扩容

一、centos7 磁盘挂载 默认盘符格式 centos7 默认文件格式xfscentos6 默认文件格式ext4centos5 默认文件格式ext3 1、/dev/vdb和/dev/mapper/lvm-data对比 1)/dev/vdb /dev/vdb通常表示一个裸的块存储设备,比如一个硬盘或者虚拟机中的一个虚拟硬盘。…

【图像分类】基于深度学习的人脸表情识别(开心、悲伤、生气三个类别,ResNet网络)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。(专栏订阅用户订阅专栏后免费提供数据集和源码一份,超级VIP用户不在服务范围之内,不想订阅专栏的兄弟们可以私信…

Uni-app跟学笔记(五):uni-ui组件库的使用、项目打包(小程序、h5、APP)

文章目录 1)uni-ui组件库的使用2)项目打包1:微信小程序打包2:h5打包3:安卓打包 本博客为 uni-app 此门课的跟学笔记,目的是便于个人复习和对知识快速索引,源码素材可在均可在视频评论区找到 1&a…

C语言函数—递归理解和练习

练习: 编写函数不允许创建临时变量,求字符串的长度。 我们看到这道题,第一个想到的是不是strlen int main() {char[] "bit";//[b][i][t][\0]//里面一共4个字符(包括结尾的、0)但是我们的strlen函数并不会计…

使用USART2收发数据时,接收数据正常,但数据发不出去

今天使用串口2与上位机通信,发现问题: 单片机接收上位机的数据正常,但发送数据给上位机时,却总是失败。 为了排除程序的干扰,我构造了一个数组,循环发送这串数据: void UartSend(uint8_t *pS…

微服务学习day02 -- nacos配置管理 -- Feign远程调用 -- Gateway服务网关

0.学习目标 1.Nacos配置管理 Nacos除了可以做注册中心,同样可以做配置管理来使用。 1.1.统一配置管理 当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理…

网络安全之URL过滤

知识改变命运,技术就是要分享,有问题随时联系,免费答疑,欢迎联系! URL过滤是一种针对用户的URL请求进行上网控制的技术,通过允许或禁止用户访问某些网页资源,达到规范上网行为和降低安全风险…