1、立即寻址
注意点:
(1)常用于给寄存器或内存操作数寻址。
(2)只能用于源操作数,不能用于目标操作数。MOV 12H, AX(错误)
3种书写方式:
(1)可以用不同进制表示,须加上后缀
16--H;若开头为A~F,须加0作为前缀
10--D;若不加后缀默认十进制
8--Q;
2--B;
(2)是单引号括起来的字符,汇编后成为对应的ASCII码
(3)是用+-*/和括号表示的算术表达式,生成机器指令时把表达式算术结果作为实际操作数
栗子:
MOV AX,2550H ;将2550H装入AX MOV CX,625 ;将十进制数625装入CX MOV BL,40H ;将40H装入BL
2、寄存器寻址
16位操作数的寄存器可以是 AX,BX,CX,DX,SI,DI,SP,BP等;
8位操作数的寄存器可以是 AL,AH,BL,BH,CL,CH,DL,DH等.
寄存器寻址方式和立即数寻址方式不涉及内存访问,因而可以取得较高的运算速度.
栗子:
MOV BX,DX ;将DX的内容复制到BX MOV ES,AX ;将AX中的内容复制到ES ADD AL,BH ;将BH中的内容加到AL
3、存储器操作数寻址
(1)直接寻址
逻辑地址写法:
(I)段寄存器名称:[偏移地址](少)
(II)段寄存器名称:变量名(多)
栗子:
MOV AX,DS:BUF 将数据段中名为BUF的存储单元中的数据送入AX
也可省略段寄存器名称 MOV AX,BUF
(2)寄存器间接寻址(间接寻址、间址)
逻辑地址写法:
段寄存器名称:[间址寄存器]
段寄存器名称可省略不写的情况:BP寄存器约定的堆栈段SS BX,SI,DI约定的数据段DS
栗子:
MOV AH,DS:[BX] ;将DS:SI中的内容移到CL 等价于MOV AH,[BX] MOV [DI],AH ;将AH的内容移到DS:DI
(3)基址寻址
逻辑地址写法:
段寄存器名称:[基址寄存器+位移量]
或
段寄存器名称:位移量[基址寄存器]
基址寄存器只能是 BP(堆栈段) BX(数据段)同理可根据约定省略段寄存器
(4)变址寻址
逻辑地址写法:
段寄存器名称:[比例因子*变址寄存器+位移量]
或
段寄存器名称:位移量[比例因子*变址寄存器]
无比例因子则删除比例因子
(5)基址加变址
段寄存器名称:[基址寄存器+比例因子*变址寄存器+位移量]
或
段寄存器名称:位移量[基址寄存器][比例因子*变址寄存器]