寄存器详解(二)
目录
内存中字的存储
示例:
数据段寄存器DS与[address]
字的传送
数据段简介
CPU提供的栈机制
栈段寄存器SS和栈顶指针寄存器SP
PUSH AX指令的完整描述
示例图
POP AX指令的完整描述
示例图
栈顶超界问题
示例一:
示例二:
内存中字的存储
在CPU中,用寄存器存储一个字,高8位存放高位字节,低8位存放低位字节;
在内存中,由于一个内存单元是一个字节,则一个字需要用两个地址连续的内存单元存放,这个字的低位字节存放在低地址单元中,高位字节存放高地址单元;
示例:
假设从0地址处存放数据1,然后从2地址处存放数据2;
数据1:20000 16进制表示:4E20H
数据2:18 16进制表示: 0012H

注:将起始地址为N的字单元简称为N地址字单元,由N号单元和N+1号单元组成;
例如:用0,1两个内存单元存放的数据4E20H称之为4E20H存放于起始地址为0的字单元中;
数据段寄存器DS与[address]
CPU要读写一个内存单元时,必须给出该内存单元的地址,CPU是根据段地址与偏移地址给出物理地址,8086CPU中用DS寄存器存放要访问数据的段地址,而[address]表示内存单元的偏移地址;
question: 如何将内存物理地址为10000H中的数据读取到寄存器AL中?
思考如下: 物理地址为10000H,取段地址为1000H,偏移地址为0000H; 将段地址保存到DS寄存器中,但是8086CPU不支持将数据直接送入段寄存器的操作,考虑一个通用寄存器作为中转;
// mov指令可以完成两种传送
// 1. 将数据直接送入寄存器 2.将一个寄存器中的内容送入另一个寄存器
mov bx,1000H
mov ds,bx
mov al,[0]


字的传送
1. mov ML/MH, [address] 该指令可以使寄存器和内存之间进行字节型数据传送;(M=A/B/C/D)
2. mov MX,[Address] 该指令可以使寄存器与内存之间进行字型数据传送;(M=A/B/C/D)
mOV BX,1000
mov ds,bx
mov ax,[0] //1000:0000处的字型数据送入AX
mov [0],cx //cx中的16位数据送到1000:0000
数据段简介
将一组长度为N(N<=64KB) 地址连续 起始地址为16的倍数的内存单元当做专门存储数据的内存空间,从而定义了一个数据段;
例如: 123B0H - 123B9H 这段内存空间当做数据段使用,取段地址为123BH,长度为10个字节;
CPU提供的栈机制
栈是一种只能在一段进行插入或删除操作的数据结构
栈有两个基本操作:
入栈: 将一个新的元素放到栈顶
出栈: 从栈顶取出一个元素
栈顶元素最后入栈,最先出栈;
8086CPU提供相关指令以栈的方式访问内存空间,这意味着,在基于8086CPU编程时,可以将一段内存当做栈来使用;
8086CPU提供入栈和出栈指令,最基本的两个是PUSH(入栈)和POP(出栈)
- push ax 表示将寄存器AX中的数据送入栈中;
- pop ax 表示从栈顶取出数据送入AX;
注:入栈和出栈的操作都是以字为单位进行
栈段寄存器SS和栈顶指针寄存器SP
question: push ax等入栈指令执行时,要将寄存器中的内容放入栈顶单元的上方,成为新的栈顶元素;pop ax等出栈指令执行时,从栈顶单元要取出数据送入寄存器当中;如何知道哪个单元是栈顶单元?
可以根据栈段寄存器SS和栈顶指针寄存器定位处栈顶单元。
栈段寄存器SS存放栈顶单元的段地址;
栈顶指针寄存器SP存放栈顶单元的偏移地址;
任意时刻,SS:SP指向栈顶元素;
PUSH AX指令的完整描述
- SP=SP-2, SS:SP指向当前栈顶前面的单元,以当前栈顶前面的单元为新的栈顶;
- 将寄存器AX 中的内容送入SS:SP指向的内存单元处,SS:SP指向新栈顶;
示例图

POP AX指令的完整描述
- 将SS:SP指向的内存单元处的数据送入寄存器AX中;
- SP=SP+2,SS:SP指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶;
示例图

栈顶超界问题
question:依靠SS 与 SP 可以保证在入栈和出栈时找到栈顶,但是如何能够保证在入栈和出栈时,栈顶不会超出栈空间?
示例一:

示例二:

上述示例描述了执行push,pop指令时,发生栈顶超界问题,当栈满的时候使用push命令入栈,当栈空时使用pop命令出栈,都将发生栈顶超界问题;
当编程时,要根据可能用到的最大栈空间,安排栈的大小,需要程序员自己担心栈顶超界问题;
相关文章:
寄存器详解(二)
目录 内存中字的存储 示例: 数据段寄存器DS与[address] 字的传送 数据段简介 CPU提供的栈机制 栈段寄存器SS和栈顶指针寄存器SP PUSH AX指令的完整描述 示例图 POP AX指令的完整描述 示例图 栈顶超界问题 示例一: 示例二: 内存中字…...
Java AIO
在Java中,AIO代表异步I/O(Asynchronous I/O),它是Java NIO的一个扩展,提供了更高级别的异步I/O操作。AIO允许应用程序执行非阻塞I/O操作,而无需使用Selector和手动轮询事件的方式。 与传统的NIO和Java NIO…...
java集合总结
1.常见集合 Collection List:有序可重复集合,可直接根据元素的索引来访问 Vector-StackArrayListLinkedList Queue:队列集合 Deque-LinkedList、ArrayDequePriorityQueue Set:无序不可重复集合,只能根据元素本身来访问…...
list交并补差集合
list交并补差集合 工具类依赖 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.8.1</version> </dependency><dependency><groupId>commons-collections&…...
【微信小程序】父组件修改子组件数据或调用子组件方法
一、使用场景 页面中用到了自定义组件形成父子组件关系,在父组件某个特定时期想要操作子组件中的数据或方法,比如离开页面的时候清空子组件的数据。 二、方法 父组件可以通过this.selectComponent方法获取子组件实例对象,这样就可以直接访…...
frp通过nginx映射multipart/x-mixed-replace; boundary=frame流媒体出外网访问
要通过Nginx访问multipart/x-mixed-replace流媒体协议,并通过FRP进行映射访问,你可以按照以下步骤进行操作: 配置Nginx以支持multipart/x-mixed-replace流媒体协议。你需要编辑Nginx的配置文件(通常是nginx.conf)&…...
Kubernetes概述
Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署(二)ETCD集群部署 Kubernetes高可用集群二进制部署(三)部署…...
Jmeter教程
目录 安装与配置 一:下载jdk——配置jdk环境变量 二:下载JMeter——配置环境变量 安装与配置 一:下载jdk——配置jdk环境变量 1.新建环境变量变量名:JAVA_HOME变量值:(即JDK的安装路径) 2.编辑Path%J…...
用Rust实现23种设计模式之建造者模式
当使用 Rust 实现建造者模式时,我们可以通过结构体和方法链来实现。建造者模式是一种创建型设计模式,它允许你按照特定的顺序构建复杂对象,同时使你能够灵活地构建不同的变体。下面是一个使用 Rust 实现建造者模式的示例, 在示例中…...
聚观早报 | 腾讯字节等企业驰援防汛救灾;新能源车7月销量单出炉
【聚观365】8月4日消息 腾讯字节等企业驰援防汛救灾新能源车7月销量成绩单出炉Model Y等车型低温续航衰减严重华为Mate60系列猜想图曝光支付宝做短视频引来羊毛党 腾讯字节等企业驰援防汛救灾 近日,京津冀地区遭遇极端降雨天气,引发洪涝和地质灾害&…...
Crack:CAD Exchanger SDK 3.20 Web Toolkit 应用
在CAD Exchanger SDK 版本 3.20.0中,我们在 Web Toolkit 中包含了绘图、BIM 和 MCAD 查看器的示例,以展示如何使用每个工具可视化数据。这些查看器具有显示不同类型数据的特定功能,允许用户根据自己的需求单独使用它们。我们将继续增强每个查…...
改造 ChatGPT-Next-Web 项目重新生成 Docker 镜像
改造 ChatGPT-Next-Web 项目重新生成 Docker 镜像 0.背景1. 修改代码2. 生成 Docker 镜像3. 上传 Docker 镜像4. 运行 Docker 镜像 0.背景 需要通过 ChatGPT-Next-Web 使用自己搭建的 OpenAI API 兼容的服务器,需要对 ChatGPT-Next-Web 项目的少量代码进行改造。 …...
git修改commit日志
由于公司对版本提交日志进行检查,如果不符合要求,则push失败。 以下是修改commit日志的方法: 1.进入到提交代码文件所在目录,即git所在目录下 cd app-repository 2.git log git log commit bf29e3e5e799d364fe2975677baf18c9…...
Qt之qml和widget混合编程调用
首先是创建一个widget项目 然后需要添加qml和quick的插件使用 QT quickwidgets qml 接着要在界面上创建一个quickwidget和按钮 创建一个c对象类 QObjectQml #ifndef QOBJECTQML_H #define QOBJECTQML_H#include <QObject> #include <QDebug> class QObjectQml …...
深度学习torch基础知识
torch. detach()拼接函数torch.stack()torch.nn.DataParallel()np.clip()torch.linspace()PyTorch中tensor.repeat()pytorch索引查找 index_select detach() detach是截断反向传播的梯度流 将某个node变成不需要梯度的Varibale。因此当反向传播经过这个node时,梯度…...
【JAVA】正则表达式是啥?
个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 文章目录 前言正则表达式正则表达式语法正则表达式的特点捕获组实例 前言 如果我们想要判断给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”),…...
网络安全之原型链污染
目录: 目录: 一、概念 二、举例 三、 实操了解 总结 四、抛出原题,历年原题复现 第一题: 五、分析与原理 第二题: 八、分析与原理 九、具体操作,payload与结果 结果: 一、概念 Java…...
【腾讯云Cloud Studio实战训练营】使用Cloud Studio迅捷开发一个3D家具个性化定制应用
目录 前言: 一、腾讯云 Cloud Studio介绍: 1、接近本地 IDE 的开发体验 2、多环境可选,或连接到云主机 3、随时分享预览效果 4、兼容 VSCode 插件 5、 AI代码助手 二、腾讯云Cloud Studio项目实践(3D家具个性化定制应用&…...
【计算机网络】第四章 网络层(一)
文章目录 第四章 网络层4.1 网络层概述4.2 网络层提供的两种服务4.2.1 小结 第四章 网络层 网络层是计算机网络体系结构中的一个关键层,位于传输层上方、数据链路层下方。它负责将传输层提供的数据分割成适当大小的数据包,并在不同网络之间进行路由选择和…...
Elasticsearch删除文档
根据id删除 例如删除id为110的文档 DELETE /ffbf/_doc/110返回信息 {"_index" : "ffbf","_type" : "_doc","_id" : "110","_version"...
ESP32-CAM搭配云服务器,三步实现外网远程监控
1. 环境准备与硬件连接 想要实现ESP32-CAM的外网远程监控,首先得把基础环境搭建好。我去年给工作室装这套系统时,发现很多人卡在第一步的硬件连接上。ESP32-CAM模块上有两个关键接口:一个是摄像头排线插座,一个是串口烧录接口。排…...
OAI-5G实战手记:从零部署5G核心网(CN5G)
1. 环境准备:Ubuntu 24.04基础配置 在开始部署5G核心网之前,我们需要确保Ubuntu 24.04系统已经做好充分准备。我实测发现,跳过某些看似简单的步骤往往会导致后续操作失败。首先打开终端,执行以下命令安装基础工具包: s…...
NSA2302 IIC总线驱动与传感器数据采集实战
1. NSA2302与IIC总线基础入门 第一次接触NSA2302微控制器时,我被它丰富的接口资源吸引住了。这款芯片内置的IIC控制器特别适合连接各种传感器,就像给智能设备装上了感知环境的神经末梢。IIC总线(Inter-Integrated Circuit)这种两线…...
无线射频专题《从波长、频率到相位:射频核心参数全解析与实战应用》
1. 射频信号的基础三要素:波长、频率与振幅 第一次调试Wi-Fi路由器时,我看到后台有个"频道带宽"设置,从20MHz调到40MHz后网速突然变快,这背后其实是射频参数的魔法。射频信号就像会跳舞的绳子——你抖动绳子的一端&…...
动态规划实战:Johnson算法优化流水线作业调度
1. 流水线调度问题与Johnson算法初探 想象一下你正在管理一个小型加工车间,车间里有两条生产线M1和M2。每个产品都需要先经过M1加工,再经过M2加工。现在有n个产品等待加工,每个产品在两条生产线上的加工时间各不相同。作为车间主管࿰…...
智慧点餐系统|亿坊·扫码点餐——正餐/快餐/茶饮,一套源码全搞定!
有不少朋友对于餐厅经营,都有着非常纠结的想法,那就是“我也想上系统,但打听一圈,要么年费贵得离谱,要么功能死板没法改。” 现在用亿坊扫码点餐系统,这一切的一切就都能解决了,今天就聊聊这套系…...
Jetson Orin Nano与树莓派CSI摄像头混用指南:硬件定义与驱动适配
1. 硬件接口差异解析 刚拿到Jetson Orin Nano和树莓派CSI摄像头时,最让我头疼的就是那堆排线接口。树莓派常用的15针和22针接口,与Jetson的22针接口看似相似,实际暗藏玄机。先说个真实案例:上周我尝试把树莓派OV5647摄像头插到Jet…...
AI智能体视觉检测系统(TVA)工作原理系列(十二)
——实战部署:TVA在柔性产线中的落地与ROI分析 作为技术人员,最终要面对的是项目的落地与交付。TVA系统在柔性产线(多品种、小批量)中的部署具有独特的优势。以一个汽车座椅调节器工厂为例,该工厂需要混线生产数十种型…...
# 发散创新:基于CQRS模式的高并发订单系统架构设计与实现在现代分布式系统中,**读写分离**和**性能优化**是绕
发散创新:基于CQRS模式的高并发订单系统架构设计与实现 在现代分布式系统中,读写分离和性能优化是绕不开的核心命题。传统的单体架构在面对海量请求时逐渐暴露出瓶颈,而 CQRS(Command Query Responsibility Segregation࿰…...
告别手动大气校正!用Google Earth Engine直接调用Landsat C2 L2地表反射率数据的完整指南
告别手动大气校正!用Google Earth Engine直接调用Landsat C2 L2地表反射率数据的完整指南 如果你曾经为了计算NDVI或地表温度而花费数小时处理原始Landsat数据,那么这篇文章将彻底改变你的工作流程。想象一下:无需下载数十GB的原始数据&#…...
