4、查表转换指令(XLAT) 格式:XLAT ; AL←((BX)+(AL))
功能:完成一个字节的查表转换BX指向表的首地址(DS段内),AL装入要转换的代码在表中的序号,并XLAT指令执行的结果存于AL中。 例如:
查找ASCII码表中,3的ASCII码
LEA BX,TABLE;DS段表的首地址送BX
MOV AL,3 ;要转换的代码在表中的序号3送AL
XLAT ;AL←((BX)+(AL)),查找到的3的ASCII码33H保存在AL中
5、地址传送指令(LEA/LDS) (1) 有效地址传送指令(LEA) 指令格式: LEA Op1, OP2 reg32,mem reg16,mem
功能:将有效地址(即偏移地址)送通用寄存器。 例如: LEA BX,[SI+1050]
(BX)=EA=(SI)+1050
(2)目标地址传送指令(LDS,LES,LFS.LGS,LSS) 指令格式: LDS reg,mem LES reg,mem LFS reg,mem LGS reg,mem LSS reg,mem
功能:取mem指示的32位或48位全地址指针(即一个16位段选择符和一个16位或32位偏移地址)装入段寄存器和16位或32位reg中。
6、标志位传位指令 指令格式:
LAHF ; F寄存器内容送AH指令 SAHF ; AH内容送F寄存器指令 PUSHF ; 16位F内容进栈指令(保存F) POPF ; 16位F内容出栈指令(恢复F)
PUSHFD;32位F内容进栈指令(保存F) POPFD ;32位F内容出栈指令(恢复F)
注:LAHF、SAHF、PUSHF、POPF、PUSHFD、POPFD的指令格式中只有操作码,操作数是隐含约定的。
7、I/O数据传送指令(IN和OUT)
指令格式:IN OP1,OP2 OUT OP1, OP2 AL, imm8 imm8, AL AX,imm8 imm8, AX EAX,imm8 imm8, EAX AL, DX DX, AL AX, DX DX, AX EAX,DX DX, EAX 功能:用于在I/O端口和AL、AX或EAX累加器之间交换数据。 注:在I/O端口直接和间接寻址I/O指令中,端口地址和DX不允许加“[ ]”,如IN AL,,[28]和IN AL,[DX]指令格式是错误的。
二、算术运算类指令
支持加、减、乘、除四种基本算术运算,其操作对象可以是字节、
字、双字的有符号和无符号二进制整数,也可以是无符号的压缩、非压缩BCD码。算术运算指令一般会影响FLAGS寄存器中的状态标志。 1、加法指令
(1)不带进位的加法指令
指令格式:ADD OP1,OP2; OP1←OP1+OP2,置标志位
reg, reg reg, mem reg, imm mem,reg mem,imm
例如:
ADD AX,BX ; AX←(AX)+(BX)
ADD AL,[DI] ;[DI]中存储单元的数与AL相加,结果存入AL
(2)带进位的加法指令 指令格式:ADC dst,src
功能:源操作数和目标操作数的和与进位标志CF相加,结果送至目标单元。 MOV AX,0002 MOV BX,FFFE ADC AX,BX
(3)加1指令 指令格式:INC des
功能:目标操作数加1,结果送至目标单元。