8086 CPU指令系统:算术与逻辑操作

需积分: 49 1 下载量 35 浏览量 更新于2024-08-17 收藏 346KB PPT 举报
"本文档主要介绍了8086CPU的指令系统,涵盖了算术操作符、逻辑操作符、关系操作符、属性操作符以及汇编语言指令的各种类别,包括数据传送、算术运算、逻辑运算、移位、标志位操作、转移、循环控制、子程序调用返回、中断调用返回、字符串操作、I/O输入输出和其他指令。同时强调了汇编语言与机器语言的关联性,以及汇编语言在程序设计中的具体性和与处理器的紧密联系。" 在8086CPU的指令系统中,算术操作符包括加(+), 减(-), 乘(*), 除(/)和模数运算(MOD),用于进行基本的数学计算。例如,`ADD`指令用于执行加法,`SUB`用于减法,`MUL`用于乘法,`DIV`用于除法,而`MOD`则返回除法的余数。这些操作符在编写处理数值计算的汇编程序时非常关键。 逻辑操作符包括AND, OR, XOR和NOT,用于进行位级别的逻辑运算。`AND`执行按位与操作,`OR`执行按位或操作,`XOR`执行异或操作,`NOT`则是按位非操作,可以用于设置或清除特定的位。 关系操作符如EQ, NE, LT, GT, LE和GE用于比较操作,它们分别表示相等、不等、小于、大于、小于或等于以及大于或等于,这些操作符在条件分支和循环控制中起到决定性作用。 属性操作符如SEG、OFFSET、TYPE、LENGTH和SIZE则用于获取或操作内存中的段地址、偏移量、数据类型、长度和大小。例如,`SEG`获取内存单元的段地址,`OFFSET`获取其偏移量,这些在处理内存访问时非常有用。 汇编语言指令的种类繁多,包括数据传送类指令(如`MOV`),它们负责在寄存器和内存之间传输数据;算术运算类指令(如`ADD`, `SUB`, `MUL`, `DIV`)用于执行基本算术运算;逻辑运算类指令(如`AND`, `OR`, `XOR`)处理位级别的逻辑操作;移位类指令(如`SHL`, `SHR`)将数据向左或向右移动位;标志位操作指令(如`TEST`, `SET`, `RESET`)修改或检查标志位状态;转移指令(如`JMP`, `JZ`, `JC`)用于控制程序流程;循环控制指令(如`LOOP`, `jecxz`)管理循环结构;子程序调用返回指令(如`CALL`, `RET`)支持函数调用和返回;中断调用返回指令(如`INT`, `IRET`)用于处理中断;字符串操作指令(如`MOVS`, `CMPS`, `SCAS`)方便处理字符串数据;I/O输入输出指令(如`IN`, `OUT`)用于与外部设备通信;其他特殊指令(如`PUS`, `POP`)管理堆栈;而宏指令和伪指令(如`MACRO`, `ENDM`, `EQU`)则提供代码复用和定义常量的能力。 汇编语言编程的一个重要方面是理解寻址方式,如直接寻址、间接寻址、寄存器寻址等,它们决定了数据和指令的来源和目的地。此外,汇编语言程序设计还需要关注分支和循环的正确实现,避免死循环,并有效地管理子程序参数的传递和堆栈的使用。对于DOS功能调用,如INT 21H的常用功能,也是汇编程序员必须掌握的基础知识。