微机——8086微处理器的数据传送指令
目录
数据传送指令:
通用数据传送指令:
MOV指令:
堆栈操作指令:
PUSH指令:
POP指令:
交换指令XCHG:
XCHG指令:
换码指令XLAT:
换码指令XLAT:
8086 CPU指令系统,按功能可以分为6类:
数据传送指令、算术运算指令、逻辑指令、串处理指令、控制转移指令和处理器控制指令。
数据传送指令:
8086有4种数据传送指令,用于实现寄存器之间、存储器与寄存器、累加器AX或AL与I/O端口、立即数到寄存器或到存储器的字节或字的传送。
通用数据传送指令:
MOV指令:
功能:把一个字节或一个字从源操作数PORD2送至目的操作数OPRD1,源操作数不改变。
格式: MOV OPRD1(目的),OPRD2(源)
(1) CS和IP两个寄存器不能作为目的操作数,也就是CS、IP不能用MOV指令来修改。
CS和IP进行的是程序运行的定位,只有需要对于程序运行过程进行改变时 ,才可以用特定的指令改变程序运行位置
(2) 当采用BX、DI、SI来间接寻址时,默认的段寄存器为DS;当用BP来寻址时默认的段寄存器为SS
(3)所有MOV指令都不影响标志位。
(4)不能用上述命令来实现存储单元之间、立即数至段寄存器及段寄存器之间的传送。
(5)源和目的操作数的类型要一致,即同时为字节或同时为字
正确用法:
- 数据传输:
- 立即数→寄存器:能将常数传进通用寄存器,例如 “MOV AX, 100”。
- 寄存器→寄存器:同长度寄存器间传数据 ,像 “MOV CX, BX”。
- 存储器→寄存器:从内存取数据到寄存器,比如 “MOV AL, [SI]” 。
- 寄存器 / 立即数→存储器:把数据存进内存单元,如 “MOV [1000H], AX”“MOV [2000H], 05H ”。
- 涉及段寄存器:通用寄存器内容可传至段寄存器,如 “MOV DS, AX” ,但不能直接用立即数给段寄存器赋值。
- 寻址方式搭配:
- 直接寻址:按给定内存地址操作,“MOV AX, [2000H]”。
- 间接寻址:借助 BX、BP、SI、DI 寄存器找内存地址,“MOV AX, [BX]” 。
- 相对寻址、基址变址、相对基址变址寻址:利用寄存器加位移量精准定位内存,如 “MOV AX, [BX + 10H]”“MOV AX, [BX+SI]”“MOV AX, [BX+SI+20H]” 。
堆栈操作指令:
PUSH、POP指令:
格式:PUSH Src
POP Dst
功能:压入堆栈指令PUSH是将16位的源操作数压入堆栈;弹出堆栈指令POP是从栈顶单元弹出16位的源操作数到目标地址。
8086的堆栈操作是按字操作的。每执行一条PUSH指令,先将堆栈指针SP自动减2,然后将16位(字)操作数压入栈顶单元。其低8位数据存低字节地址单元,高8位数据存高字节地址单元。执行弹出POP指令时,操作正好相反,先弹出一个字数据至目标地址,再修正堆栈指针,SP自动加2。
若子程序开始有如下保护现场指令:
PUSH AX
PUSH DS
子程序
则子程序返回前,应按如下顺序恢复现场:
POP DS
POP AX
8086规定,凡是遇到给SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令被执行后,才恢复对SS和SP寄存器赋值前的中断开放情况。这样做是为了允许程序连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。故应用时应注意在修改SS和SP指令之间不要插入其他指令。
PUSH指令:
POP指令:
交换指令XCHG:
XCHG指令:
格式:XCHG OPRD1,OPRD2
功能:操作数OPRD1的内容与操作数OPRD2的内容交换
OPRD1和OPRD2可以是通用寄存器和存储单元(两个操作数不能同时为存储单元)可以采用除立即数以外的各种寻址方式
换码指令XLAT:
换码指令XLAT:
格式: XLAT
功能:用来将一种字节代码转换成另一种字节代码。它将BX的内容(代码表格首地址)和AL的内容(表格偏移量)相加作为有效地址,并从中取出此地址单元中的内容送到AL中。完成一个字节的查表转换。把累加器AL中的(被查)值,转换成以BX为表基址的表中值
XLAT指令可用来将一个代码值转换成相应的另一种代码值。应用时,首先应列出两种代码的表格。
- XLAT 指令执行前,要先将表格的首地址存到
DS:BX
寄存器对里。同时,把需要转换的代码相对表格首地址的偏移量(也就是索引值)存放在AL
寄存器。 - 当执行 XLAT 指令时,处理器会把
AL
中的偏移量和DS:BX
组合,计算出实际物理地址,然后从该地址处取出一个字节数据,再将这个数据送回AL
寄存器,以此替换掉原来的偏移量,完成代码转换。例如,若有一张 ASCII 码值转换表,存放着字符对应的扩展 ASCII 码,已知字符对应的序号在AL
,利用 XLAT 就能快速得到对应的扩展码。
例如:要将十进制数0~9转换成共阳极LED显示的字形代码,则列表如表所示。
相关文章:

微机——8086微处理器的数据传送指令
目录 数据传送指令: 通用数据传送指令: MOV指令: 堆栈操作指令: PUSH指令: POP指令: 交换指令XCHG: XCHG指令: 换码指令XLAT: 换码指令XLAT: 8086 …...
vue3中onUpdated钩子函数和nextTick的具体使用场景和区别
在 Vue 3 中,onUpdated 钩子函数和 nextTick 方法都用于处理 DOM更新后的操作,但它们的使用场景和触发时机有所不同。以下是它们的具体使用场景和区别,结合代码示例进行解释: onUpdated 钩子函数 使用场景:适用于需要…...

colnames看似简单,却能优化数据处理流程
引言 在数据处理和分析中,变量名称是至关重要的,它们决定了数据的可读性和操作的简便性。在R语言中,colnames 函数以其简单的语法设计,提供了高效管理数据框列名的能力,尤其是在复杂的爬虫任务中显得尤为重要。本篇文…...
欧几里得距离在权重矩阵中的物理意义
欧几里得距离在权重矩阵中的物理意义 目录 欧几里得距离在权重矩阵中的物理意义**衡量神经元差异程度**:**反映模型变化程度**:**聚类和分组的依据**:自然语言处理中的模型更新:**神经网络聚类分组**:欧几里得距离在权重矩阵中的物理意义衡量神经元差异程度: 在神经网络中…...

AI编程辅助开发网站
咋用AI工具快速鼓捣出个网站? 咱都知道,现在这年月,干啥都讲究个效率,做网站更是如此。好在有了那些AI小帮手,不管你是专业搞开发的老手,想让活儿干得更快些,还是从没做过网站的小白࿰…...

「Mac畅玩鸿蒙与硬件53」UI互动应用篇30 - 打卡提醒小应用
本篇教程将实现一个打卡提醒小应用,通过用户输入时间进行提醒设置,并展示实时提醒状态,实现提醒设置和取消等功能。 关键词 打卡提醒状态管理定时任务输入校验UI交互 一、功能说明 打卡提醒小应用包含以下功能: 提醒时间输入与…...

基于单片机洗衣机控制器的设计(论文+源码)
1需求分析 在智能洗衣机系统设计中,考虑到洗衣机在实际应用过程中,需要满足用户对于不同衣物清洁、消毒的应用要求,对设计功能进行分析,具体如下: 通过按键实现洗衣机不同工作模式的切换,包括标准模式&…...

【Git系列】解析与解决Git错误:RPC失败;curl 56 OpenSSL SSL_read: error:140943FC
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
[Unity Shader] 【游戏开发】Unity基础光照1-光照模型原理
在计算机图形学中,渲染是一个复杂的过程,包含了两个主要部分:决定一个像素的可见性和计算该像素的光照。其中,光照模型是渲染过程中的核心部分,它模拟了真实世界中的光与物体表面的交互,帮助生成最终的图像。在Unity等游戏引擎中,理解光照模型的原理是创建真实感视觉效果…...

基于Python 的宠物管理系统(源码+部署)
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
console.log封装
console.log封装 在控制台中打印带有颜色和格式的日志信息。 /*** 检查给定的对象是否为数组*/ const isArray function (obj: any): boolean {return Object.prototype.toString.call(obj) [object Array] }/*** Logger 构造函数*/ Logger () > {}/*** 根据日志类型返回…...

戴尔/Dell 电脑按什么快捷键可以进入 Bios 设置界面?
BIOS(基本输入输出系统)是计算机硬件与操作系统之间的桥梁,它负责初始化和测试系统硬件组件,并加载启动操作系统。在某些情况下,如调整启动顺序、更改系统时间或日期、修改硬件配置等,您可能需要进入BIOS进…...

GitLab创建用户,设置访问SSH Key
继上一篇 Linux Red Hat 7.9 Server安装GitLab-CSDN博客 安装好gitlab,启用管理员root账号后,开始创建用户账户 1、创建用户账户 进入管理后台页面 点击 New User 输入用户名、邮箱等必填信息和登录密码 密码最小的8位,不然会不通过 拉到…...

Mysql--基础篇--SQL(DDL,DML,窗口函数,CET,视图,存储过程,触发器等)
SQL(Structured Query Language,结构化查询语言)是用于管理和操作关系型数据库的标准语言。它允许用户定义、查询、更新和管理数据库中的数据。SQL是一种声明性语言,用户只需要指定想要执行的操作,而不需要详细说明如何…...
比较 FreeSWITCH 的 asr 事件和回调函数
用 lua 来描述,是这样的 第一种做法: session:setVariable("fire_asr_events", "true") session:execute("detect_speech", "start-input-timers") 识别到结果之后可以收到 DETECTED_SPEECH 事件 另外一个做法…...

基于ffmpeg和sdl2的简单视频播放器制作
基于ffmpeg和sdl2的简单视频播放器制作 前言一、视频播放器开发的基础1.1 视频播放原理1.2 开发所需的库 二、FFmpeg库详解2.1 FFmpeg库的组成2.2 关键数据结构2.3 打开视频文件并获取流信息2.4 查找视频流和解码器2.5 初始化解码器 三、SDL库详解3.1 SDL库的功能3.2 初始化SDL…...
卫星导航信号的形成及解算
引言 卫星导航信号是现代导航技术的核心,它利用卫星发射的信号实现全球范围内的精确定位和导航。本文将详细介绍卫星导航信号的形成及解算过程。 一、卫星导航信号的形成 卫星导航信号的形成主要包括信号的生成、调制和传播三个步骤。 1. 信号的生成 卫星导航信号主…...

硬件-射频-PCB-常见天线分类-ESP32实例
文章目录 一:常见天线1.1 PCB天线①蓝牙模块的蛇形走线-天线②倒F天线-IFA:③蛇形倒F天线-MIFA④立体的倒F天线-PIFA 1.2 实例示意图1.21 对数周期天线(LPDA):1.22 2.4GHZ的八木天线:1.23 陶瓷天线:1.24 外接天线: 二&…...
salesforce 验证规则判断一个picklist是否为none
在 Salesforce 验证规则中,如果你想判断一个 Picklist 字段是否等于 None,可以使用 ISPICKVAL 函数。 以下是具体的公式: ISPICKVAL(Picklist_Field__c, "None")示例解释: Picklist_Field__c: 是你的自定义 Picklist…...

解决 IntelliJ IDEA 中 Tomcat 日志乱码问题的详细指南
目录 前言1. 分析问题原因2. 解决方案 2.1 修改 IntelliJ IDEA 的 JVM 选项2.2 配置 Tomcat 实例的 VM 选项 2.2.1 设置 Tomcat 的 VM 选项2.2.2 添加环境变量 3. 进一步优化 3.1 修改 Tomcat 的 logging.properties3.2 修改操作系统默认编码 3.2.1 Windows 系统3.2.2 Linux …...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...

DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...
大数据驱动企业决策智能化的路径与实践
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:数据驱动的企业竞争力重构 在这个瞬息万变的商业时代,“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...
python读取SQLite表个并生成pdf文件
代码用于创建含50列的SQLite数据库并插入500行随机浮点数据,随后读取数据,通过ReportLab生成横向PDF表格,包含格式化(两位小数)及表头、网格线等美观样式。 # 导入所需库 import sqlite3 # 用于操作…...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...

C# WPF 左右布局实现学习笔记(1)
开发流程视频: https://www.youtube.com/watch?vCkHyDYeImjY&ab_channelC%23DesignPro Git源码: GitHub - CSharpDesignPro/Page-Navigation-using-MVVM: WPF - Page Navigation using MVVM 1. 新建工程 新建WPF应用(.NET Framework) 2.…...