32位微处理器指令系统之一般数据传送指令

1.传送指令

指令格式:MOV OPD,OPS

功能:将源操作数传送到目的地址中,即(OPS)→OPD。

MOV有如下五种具体格式:

MOV reg,reg 
;两个寄存器之间的数据
;传送,如MOV AL, BH
MOV reg,mem
;内存单元内容送给寄存器,读内存,
;如MOV BX,[ESI]
MOV mem,reg
;寄存器的数据送给内存单元,写内存,
;如MOV [ESI],BX
MOV reg,imm
;立即数送给寄存器,
;如MOV ECX,12345678H
MOV mem,imm
;立即数送给内存单元,如
;MOV WORD PTR [SI],5678H

用于段寄存器的传送指令有三种格式

MOV seg,reg 
;寄存器数据送给数据段寄存器,
;如 MOV DS,AX
MOV reg,seg
;段寄存器数据送给寄存器,
;如 MOV AX,DS
MOV mem,seg

;段寄存器数据送给内存单元,
;如 MOV [ESI],DS

2.数据交换指令:

指令格式:XCHG OPD,OPS

功能:将源操作数与目的操作数的内容互换,即(OPS)←→(OPD)。

XCHG一般有如下三种:

XCHG reg,reg
XCHG reg,mem
XCHG mem,reg

例:

 XCHG AH,AL 
;其操作是AH和AL两
;个寄存器的值交换
XCHG EAX,EBX
;其操作是EAX和EBX
;两个寄存器值交换。

3.查表转换指令

指令格式:XLAT或XLATB

功能:DS:[BX+AL]→AL,或DS:[EBX+AL]→AL,即 将(BX)或(EBX)为首地址、(AL)为偏移量的字节存储单元中的内容送AL。

由于AL的值不能超过256,所以表的大小也不能超过256个字节。

操作码XLAT的含义是:translate(转换)

例:

data segment 
;定义数据段DS
tab db ’0123456789’
;单引号内汇编后,生成数
;0~9对应的ASCII码
data ends
;数据段结束

mov bx,offset tab
;变量名tab的偏移地址传
;送给bx,指向表的首地址
mov al,4
;表tab中第5项的偏移量4→al
xlat
;(tab+4)=34h→al

该例完成的功能是将al中的一位10进制数转换成对应的ASCII码(字符)。

4. 标志寄存器装入指令\标志寄存器保存指令:

指令格式:LAHF

功能:将标志寄存器低8位送AH。

指令格式:SAHF

功能:将AH的内容送入标志寄存器的低8位,而高8位保持不变。该指令执行后,OF、DF、IF、TF的值均不变,因为这4个标志位于标志寄存器的高8位。但SF、ZF、AF、PF、CF的值会发生变化,因为这5个标志位于标志寄存器的低8位。

32位微处理器指令系统之一般数据传送指令


分享到:


相關文章: