MOV指令,能實現以下操作:
- ①CPU內部寄存器之間數據的任意傳送(除了碼段寄存器CS和指令指針IP以外)。
- ②立即數傳送至CPU內部的通用寄存器組(即AX、BX、CX、DX、BP、SP、SI、DI),給這些寄存器賦初值。
- ③CPU內部寄存器(除了CS和IP以外)與存儲器(所有尋址方式)之間的數據傳送,可以實現一個字節或一個字的傳送。
- ④能實現用立即數給存儲單元賦初值。
立即數傳送
MOV CL,4 ;CL←4,字節傳送
MOV DX,0FFH ;DX←00FFH,字傳送 MOV SI,200H ;SI←0200H,字傳送 MOV BVAR,0AH ;字節傳送
;假設BVAR是一個字節變量,定義如下:BVAR DB 0 MOV WVAR,0BH ;字傳送
;假設wvar是一個字變量,定義如下:wvar dw 0
寄存器傳送
mov ah,al ;ah←al,字節傳送
mov bvar,ch ;bvar←ch ,字節傳送
mov ax,bx ;ax←bx,字傳送
mov ds,ax ;ds←ax,字傳送
mov [bx],al ;[bx]←al,字節傳送
存儲器傳送
mov al,[bx] ;al←ds:[bx]
mov dx,[bp] ;dx←ss:[bp+0]
mov dx,[bp+4] ;dx←ss:[bp+4]
mov es,[si] ;es←ds:[si]
段寄存器傳送
MOV [SI],DS
MOV AX,DS ;AX←DS
MOV ES,AX ;ES←AX←DS
注意:
- (1)MOV指令不能在
兩個存儲器
之間進行數據直接傳送。 - (2)MOV指令不能在
兩個段寄存器
之間進行數據直接傳送。 - (3)不允許立即數傳送給段寄存器 ,例如
MOV DS,100H;非法指令:立即數不能傳送段寄存器
- (4)目的操作數不能爲CS和IP。
其中 (1)(2) 的傳送可用通用寄存器作爲中介,用兩條傳送指令;例如:
MOV AL,AREA1
MOV AREA2,AL
非法指令主要現象: 兩個操作數的類型不一致 ;無法確定是字節量還是字量操作; 兩個操作數都是存儲器 。
段寄存器的操作有一些限制
段寄存器屬專用寄存器,對操作能力有限
- ① 目的操作數不能是立即尋址方式。
- ② 源操作數與目的操作數不能同時爲存儲器尋址方式,即兩個內存單元之間不能直接傳送數據。
- ④ 兩個段寄存器之間不允許直接傳送數據。 例如
MOV DS,ES;非法指令:不允許段寄存器間傳送
- ⑤ 不允許給CS、IP、PSW三個寄存器直接·傳送數據,即這3個寄存器的值用戶無權改變。 例如
MOV CS,[SI] ;不允許使用的指令
- ⑥ 源操作數和目的操作數必須字長相等。
- ⑦ MOV指令不影響標誌位。