8086微处理器指令
好的,以下是关于 8086 微处理器指令集的主要分类和一些关键指令的中文介绍:
核心概念: 8086 指令是直接指挥CPU进行操作的二进制编码。一条指令通常包含一个操作码(指明做什么操作)和操作数(指明操作的数据来源和目的地,如寄存器、内存地址或立即数)。操作数寻址方式多样。
主要指令分类与示例:
-
数据传输指令 (Data Transfer):
MOV dest, src: 将数据从源操作数src(寄存器、内存、立即数) 复制到目标操作数dest(寄存器、内存)。是使用最频繁的指令。- 示例:
MOV AX, BX(将BX内容复制到AX);MOV [SI], AL(将AL内容复制到SI指向的内存单元)
- 示例:
XCHG op1, op2: 交换两个操作数 (op1和op2) 的内容。两者必须同为寄存器或其中一个为内存。LEA reg, mem: 将内存操作数的偏移地址(而非其内容)加载到目标寄存器 (reg) 中。LDS reg, mem: 从内存操作数mem指向的连续4个字节中,加载段值到DS段寄存器,加载偏移地址到目标寄存器 (reg)。LES reg, mem: 功能同LDS,但加载段值到ES段寄存器。PUSH src: 将源操作数 (src: 寄存器、段寄存器、内存字) 压入堆栈 (SP减小)。POP dest: 将栈顶数据弹出到目标操作数 (dest: 寄存器、段寄存器、内存字) (SP增大)。IN acc, port: 从指定的输入端口 (port) 读取一个字节/字到累加器 (AL/AX)。OUT port, acc: 将累加器 (AL/AX) 中的一个字节/字写入指定的输出端口 (port)。
-
算术运算指令 (Arithmetic):
ADD dest, src: 目标操作数dest=dest+src。设置标志位。ADC dest, src: 目标操作数dest=dest+src+ 进位标志CF。用于多字节加法。SUB dest, src: 目标操作数dest=dest-src。设置标志位。SBB dest, src: 目标操作数dest=dest-src- 借位标志CF。用于多字节减法。INC op: 操作数op(寄存器、内存) 自增1。不影响CF标志。DEC op: 操作数op(寄存器、内存) 自减1。不影响CF标志。MUL src: 无符号乘法。src(寄存器、内存字节/字) 与AL/AX相乘,结果在AX(8位x8位) 或DX:AX(16位x16位) 中。IMUL src: 带符号(整数)乘法。操作同MUL。DIV src: 无符号除法。如果src是字节,AX/src,商在AL,余数在AH;如果src是字,DX:AX/src,商在AX,余数在DX。IDIV src: 带符号(整数)除法。操作同DIV。CMP dest, src: 执行dest - src比较操作,根据结果设置标志位(CF, ZF, SF, OF等),但不保存结果。常用在条件跳转前。NEG op: 操作数op(寄存器、内存) 取补码 (即求相反数:op = 0 - op)。
-
逻辑运算指令 (Logical):
AND dest, src: 目标操作数dest=destANDsrc(按位与)。置CF=OF=0。OR dest, src: 目标操作数dest=destORsrc(按位或)。置CF=OF=0。XOR dest, src: 目标操作数dest=destXORsrc(按位异或)。置CF=OF=0。NOT op: 操作数op(寄存器、内存) 按位取反 (逻辑非)。TEST dest, src: 执行dest AND src测试操作,根据结果设置标志位(尤其是ZF, SF),但不保存结果。常用在条件跳转前检查特定位。
-
移位和循环移位指令 (Shift/Rotate):
SHL/SAL dest, count: 逻辑左移/算术左移。低位补0,移出位进入CF。count可为1或CL寄存器内容。SAL对带符号数有意义,但操作同SHL。SHR dest, count: 逻辑右移。高位补0,移出位进入CF。SAR dest, count: 算术右移。高位用符号位(最高位)填充,移出位进入CF。用于带符号数。ROL dest, count: 循环左移。最高位移到CF 同时 移到最低位。ROR dest, count: 循环右移。最低位移到CF 同时 移到最高位。RCL dest, count: 带进位循环左移。CF值移入最低位,最高位移出到CF。RCR dest, count: 带进位循环右移。CF值移入最高位,最低位移出到CF。
-
程序控制转移指令 (Control Transfer):
JMP target: 无条件跳转到目标地址target(可以是标签、寄存器或内存地址)。条件跳转指令: 根据标志位状态决定是否跳转。常用:JE/JZ(ZF=1, 相等/等于零跳转)JNE/JNZ(ZF=0, 不相等/不等于零跳转)JA/JNBE(CF=0 and ZF=0, 高于/不低于等于跳转,无符号数)JB/JNAE/JC(CF=1, 低于/不高于等于/有进位跳转,无符号数)JG/JNLE(ZF=0 and SF=OF, 大于/不小于等于跳转,带符号数)JL/JNGE(SF != OF, 小于/不大于等于跳转,带符号数)
CALL proc: 调用子程序proc。先将返回地址(下条指令地址)压栈,然后跳转到proc。RET [n]: 从子程序返回。弹出栈顶的返回地址并跳转回去。可选操作数n表示在弹出返回地址后,再额外增加栈指针SP的值n(通常用于清理传递的参数)。INT n: 软件中断。调用系统中断服务程序n(n是中断号,0-255)。INTO: 溢出中断。如果溢出标志OF=1,则产生中断4。IRET: 中断返回。用于从中断服务程序中返回,同时恢复标志寄存器。
-
处理器控制指令 (Processor Control):
CLC: 清除进位标志 (CF=0)。STC: 设置进位标志 (CF=1)。CMC: 进位标志取反 (CF = 非 CF)。CLD: 清除方向标志 (DF=0)。串操作后指针递增。STD: 设置方向标志 (DF=1)。串操作后指针递减。CLI: 清除中断允许标志 (IF=0)。禁止可屏蔽中断。STI: 设置中断允许标志 (IF=1)。允许可屏蔽中断。HLT: 暂停 CPU执行,直到发生中断或复位。NOP: 空操作。消耗时钟周期,不进行任何实质性操作。常用于延时或占位。
-
字符串操作指令 (String - Often used with
REPprefix):MOVSB/MOVSW: 移动字符串数据 (字节或字)。从DS:SI指向的内存复制到ES:DI指向的内存,并根据DF递增/递减SI和DI。CMPSB/CMPSW: 比较字符串 (字节或字)。比较DS:SI和ES:DI指向的数据,并根据DF递增/递减SI和DI。设置标志位如CMP。SCASB/SCASW: 扫描字符串 (字节或字)。将累加器AL/AX与ES:DI指向的数据比较,设置标志位,并根据DF递增/递减DI。LODSB/LODSW: 加载字符串 (字节或字)。将DS:SI指向的数据加载到AL/AX,并根据DF递增/递减SI。STOSB/STOSW: 存储字符串 (字节或字)。将AL/AX存储到ES:DI指向的内存,并根据DF递增/递减DI。REP: 重复前缀。重复后续的字符串指令(MOVS, STOS, LODS)CX次(CX是计数寄存器)。REPE/REPZ: 相等/为零时重复。重复后续的字符串指令(CMPS, SCAS)直到CX=0或ZF=0(不相等/不为零)。REPNE/REPNZ: 不相等/不为零时重复。重复后续的字符串指令(CMPS, SCAS)直到CX=0或ZF=1(相等/为零)。
重要特性与注意事项:
- 操作数大小: 大多数指令根据操作数确定是处理字节 (8位) 还是字 (16位)。
- 立即数: 在指令中直接给出的常数 (
#立即数)。 - 寻址方式: 指令如何定位操作数(立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址如
[BX]、基址变址寻址如[BX+SI]、带偏移的基址变址寻址如[BX+SI+10])。 - 段: 8086使用段寄存器 (
CS,DS,ES,SS) + 偏移地址来访问1MB内存。指令会根据操作类型默认隐含使用特定的段寄存器 (如MOV [BX], AX隐含使用DS作为数据段),也可在指令中显式覆盖 (MOV ES:[DI], AX)。 - 标志寄存器 (FLAGS): 记录运算结果状态(CF-进位, ZF-零, SF-符号, OF-溢出, PF-奇偶, AF-辅助进位, DF-方向, IF-中断允许, TF-陷阱标志)。
以上是8086指令集的核心部分概述。掌握这些指令及其功能、寻址方式和标志位影响是理解8086汇编编程的基础。在实际编程中,需要结合具体需求选择指令并正确管理寄存器和内存。
简述微处理器的指令集架构
微处理器的指令集架构(Instruction Set Architecture,ISA)是计算机体系结构中的核心组成部分,它定义了计算机能够执行的指令
2024-10-05 14:59:00
嵌入式微处理器与应用
嵌入式微处理器与应用(嵌入式开发环境的构建包括几部分内容)-该文档为嵌入式微处理器与应用讲解文档,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看………………
资料下载
佚名
2021-07-30 09:59:26
微处理器的指令集架构介绍
微处理器的指令集架构(Instruction Set Architecture,ISA)是计算机体系结构中至关重要的部分,它定义了微处理器能够执
2024-08-22 10:53:45
计算机指令架构与微处理器设计原理
MIPS——内部无互锁级微处理器( Microprocessor without interlocked piped stages ),采用RISC 指令集,所有的
2023-06-27 16:56:17
16位和32位微处理器的相关资料推荐
第2章 16位和32位微处理器微处理器的性能指标最主要的是以下两项:1.字长2.主频一、16位微处理器80868086是Intel系列的16位
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机