1. 兩個(gè)操作數(shù)的類型不一致:例如源操作數(shù)是字節(jié),而目的操作數(shù)是字;或相反
絕大多數(shù)雙操作數(shù)指令(包括傳送指令),除非特別說明,目的操作數(shù)與源操作數(shù)必須類型一致,或者同為字,或者同為字節(jié),否則為非法指令。例如:
MOV AL,050AH ;非法指令:050Ah為字,而AL為字節(jié)
寄存器有明確的字節(jié)或字類型,有寄存器參與的指令其操作數(shù)類型就是寄存器的類型。對(duì)于存儲(chǔ)器單元與立即數(shù)同時(shí)作為操作數(shù)的情況,必須顯式指明。用byte ptr指示字節(jié)類型,用word ptr指示字類型。
2. 兩個(gè)操作數(shù)不能都是存儲(chǔ)器:傳送指令很靈活,但主存之間的直接傳送卻不允許
8086指令系統(tǒng)不允許兩個(gè)操作數(shù)都是存儲(chǔ)單元(除串操作指令),沒有主存至主存的數(shù)據(jù)傳送。要實(shí)現(xiàn)這種傳送,可通過寄存器間接實(shí)現(xiàn)。
3. 段寄存器的操作有一些限制:段寄存器屬專用寄存器,對(duì)他們的操作能力有限
不允許立即數(shù)傳送給段寄存器,例如:
MOV DS,100H ;非法指令:立即數(shù)不能傳送段寄存器
不要直接改變CS值,例如:
MOV CS,[SI] ;不允許使用的指令
不允許段寄存器之間的直接數(shù)據(jù)傳送,例如:
MOV DS,ES ;非法指令:不允許段寄存器間傳送