以MOV指令为例,其格式为:
MOV 目的操作数,源操作数
1.立即寻址
可以是8位或16位,如:
MOV AX,1234H
2.寄存器寻址
操作数事先存放在寄存器中,如:
MOV AX,BX
MOV AL,BL
3.存储器寻址
我们将操作数的地址偏移量称为有效地址(Effective Address,EA)
EA=基址+变址+位移量
基址只能存放在BX或BP中;变址只能存放在SI或DI中;位移量可以是8位或16位的带符号地址(可以是负数),例如:
BX+SI+1234H
基址、变址、位移量都是可选的,比如可以只有基址和位移量,叫寄存器相对寻址。
4.端口寻址
直接端口寻址。此时端口地址只有八位,如:
IN AL,20H ;从20H号端口读入8位数据
OUT 20H,AX ;把AX中的内容送到20H端口和21H端口
;其中AL的值送20H,AH的值送21H
;输入输出只能逐个字节处理,当尝试用字进行输入输出,会按并行处理
间接端口寻址。此时端口地址为16位,需要将端口地址放于寄存器DX中再去寻址,如:
MOV DX,1000H ;端口地址为1000H
OUT DX,AL ;间接端口寻址
MOV DX,20H ;汇编程序会自动在20H前补零变为16位的0020H
IN AX,DX ;将[0020H]端口的值送AL
;并将[0021H]端口的值送AH