基本格式:操作码 [目的操作数据][源操作数]
#“[]”表示可有可无
零操作数指令:操作码 (隐含操作对象)
单操作数指令:操作码 操作数
双操作数指令:操作码 操作数 操作数
多操作数指令:三个操作数及以上
A.立即寻址:
#也就是立即数寻找,且立即数只在源操作数。
例:MOV AX,1200H
B.寄存器寻址:
#参加操作的操作数在cpu的通用寄存器中
例:MOV AX,BX
C.存储器寻址:
#指令操作对象在内存中
#操作数据用[偏移地址]表示,下面提到的偏移地址都是写在[]内,表示此偏移地址所指向的内存中的数据
#存储器操作数的字长本身不确定,其字长取决于另一个寄存器的操作数,
或通过其他方式确定字长,如(MUL BYTE PTR[BX])
1.直接寻址:指令中直接给出操作数的偏移地址
例:MOV AX [1200H]
操作数默认为数据段,但允许段重设:
MOV AX,ES:[1200H] #重设到代码段
2.寄存器间接寻址:
#有路由器间接给出地址
#仅有4个通用寄存器可用于存放数据的偏移地址:BX,BP,SI,BI
其中:BX,SI,DI———默认数据段
BP—————默认堆栈段
例:
MOV BX,1200H
MOV AX,[BX]
3. 寄存器相对寻址:
#操作数的偏移地址为寄存器内容加上一个位移量
#一般用于一维数组的操作
例:MOV AX,[BX+DATA]
4.基址变址寻址:
#操作数的偏移地址为:一个基址寄存器内容+一个变址寄存器内容
#段地址由基址寄存器决定
BX--------数据段
BP--------堆栈段
例:MOV SI,1100H
MOV BX,SI
MOV AX,[SI+BX] #偏移地址在数据段
5.基址,变址,相对寻址
#偏移地址=基址寄存器 + 变址寄存器 + 位移量
#段地址由基址寄存器决定
#主要用于二维表
例:
MOV DI,1100H
MOV BP,DI
MOV AL,[BP][DI][S]
D.隐含寻址方式:
#指令中隐含一个或两个操作数的地址,即操作数在默认地址中
例: MUL BL
总结:通过以上总结:寻址方式可以分成立即数寻址,寄存器寻址,存储器寻址,隐含寻址,
其中存储器寻址包括:直接寻址,寄存器间接寻址,相对寻址,基址变址寻址,基址变址相对寻址。
所以总共就有8大寻址方式