ASM - 指令01 MOV

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]alds:[bx] 
mov dx,[bp]dxss:[bp+0] 
mov dx,[bp+4]dxss:[bp+4] 
mov es,[si]esds:[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指令不影響標誌位。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章