汇编语言笔记13-数据移动指令的合法性

8086寄存器中允许的数据流向如图,注意CS只能作为源操作数
考察以下的指令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| mov ax,8h ;mov 寄存器,立即数,合法的
mov ax,bx ;mov 通用寄存器,通用寄存器,合法的
mov ax,ds ;mov 通用寄存器,段寄存器,合法的
mov ds,ax ;mov 段寄存器,通用寄存器,合法的
mov ax,[0] ;mov 通用寄存器,内存单元,合法的
;以下三条指令中,内存单元作为目的操作数,masm会忽略中括号【】,因此要显式地指明段地址 mov [0],bx ;mov 内存单元,寄存器,合法的
mov [0],cs ;mov 内存单元,段寄存器,合法的
mov [0], 5678h ;mov 内存单元,立即数,合法的
;------------------------// mov 内存单元,内存单元 是不合法的。
mov ds,[0] ;mov 段寄存器,内存单元,合法的
mov ds,ax ;mov 段寄存器,寄存器,合法的
;------------------------// mov 段寄存器,段寄存器 是不合法的 ;------------------------// mov 段寄存器,立即数 是不合法的
|
add操作的合法性
1 2 3 4
| add 寄存器,数据 add 寄存器,寄存器 add 内存单元,寄存器 add 寄存器,内存单元
|