MOV指令

aaaolivia發表於2018-04-10

MOV指令允許進行如下操作:

 

(1)MOV  暫存器     , 暫存器/記憶體單元/段暫存器/立即數

(2)MOV  記憶體單元  , 暫存器/段暫存器/立即數

(3)MOV  段暫存器 , 暫存器/記憶體單元

 

MOV指令不允許進行下述操作:

 

(1). 兩個運算元的型別不一致

     例如源運算元是位元組,而目的運算元是字;或相反

     絕大多數雙運算元指令(包括傳送指令),除非特別說明,目的運算元與源運算元必須型別一致,或者同為字,或者同為位元組,否則為非法指令。

 

例如:
MOV AL,050AH ;非法指令:050Ah為字,而AL為位元組

暫存器有明確的位元組或字型別,有暫存器參與的指令其運算元型別就是暫存器的型別。對於儲存器單元與立即數同時作為運算元的情況,必須顯式指明。用byte ptr指示位元組型別,用word ptr指示字型別。

 


(2). 兩個運算元不能都是儲存器

 

傳送指令很靈活,但主存之間的直接傳送卻不允許
8086指令系統不允許兩個運算元都是儲存單元(除串操作指令),沒有主存至主存的資料傳送。要實現這種傳送,可通過暫存器間接實現。


(3). 段暫存器的操作有一些限制:段暫存器屬專用暫存器,對他們的操作能力有


不允許立即數傳送給段暫存器,例如:

MOV DS,100H ;非法指令:立即數不能傳送段暫存器

不要直接改變CS值,例如:

MOV CS,[SI] ;不允許使用的指令


 

不允許段暫存器之間的直接資料傳送,例如:

MOV DS,ES ;非法指令:不允許段暫存器間傳送

相關文章