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位微處理器指令系統之一般數據傳送指令


分享到:


相關文章: