8086/8088 指令系统 8086/8088 的指令系统丰富,而且指令的功能也强。 大多数指令既能处理字数据,又能处理字节数据; 算术运算和逻辑运算不局限于累加器, 存储器操作数也可直接参加算术逻辑运算。 8086/8088 的指令系统可分为如下六个功能组: (1) 数据传送 (2) 算术运算 (3) 逻辑运算 (4) 串操作 (5) 程序控制 (6) 处理器控制 汇编语言语句的一般格式。指令语句可由四部分组成,一般格式如下: [标号:] 指令助记符 [操作数 1] [操作数 2] [;注释] 指令是否带有操作数,完全取决于指令本身标号的使用取决于程序的需要, 标号只被汇编程序识别,它与指令本身无关。 (一)数据传送指令 数据传送指令组又可分为:传送指令,交换指令,地址传送指令,堆栈操作指令,标志传送指令,查表指令,输入输出指令在有关章节介绍。 除了 SAHF 和 POPF 指令外,这组指令对各标志没有影响。 1, 传送指令 其格式如下:MOV DST,SRC 目的,源 源操作数可以是累加器,寄存器,存储单元以及立即数, 而目的操作数可以是累加器,寄存器和存储单元。传送不改变源操作数。 传送指令能实现下列传送功能: (1) CPU 内部寄存器之间的数据传送。例如: MOV AH,AL MOV DL,DH MOV BP,SP MOV AX,CS 注意:源和目的操作数不能同时是段寄存器;代码段寄存器 CS 不能作为目的;指令指针 IP 即不能作为源,也不能作为目的。注意,这种例外永远存在。 (二)交换指令 利用交换指令可方便地实现通用寄存器与通用寄存器或存储单间的数据交换, 交换指令的格式如下: XCHG OPRD1,OPRD2 此指令把操作数 OPRD1R 的内容与操作数 OPRD2 的内容交换。操作数同时是字节或字。 例如: XCHG AL,AH; XCHG SI,BX OPRD1 和OPRD2 可是通用寄存器和存储单元。但不包括段寄存器,也不能同时是存储单元,还不能有立即数,可采用各种存储器寻址方式来指定存储单元。 例如:XCHG BX,[BP+SI] 如指令执行前: (BX)=6F30H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F246)=4154H 物理地址=2F000+0200+0046=2F246H 指令执行后:(BX)=4154H (2F246H)=6F36H 此指令不影响标志位 (三)地址传送指令 80686/8088 有如下三条地址传送指令。 (1) 指令LEA (Load Effective Address) 指令LEA 称为传送有效地址指令,其格式如下: LEA REG,OPRD 该指令把操作数OPRD 的有效地址传送到...