寻址方式
- 立即数寻址: MOV AX,34H;不能给段寄存器和标志寄存器赋立即数(MOV DS,1250是错误的)
- 寄存器寻址: 可以是AX,BX,CX,DX,SI,DI,SP,BP;寄存器的位数必须一致(MOV CL,BX是错误的)
- 内存储器寻址: 取得操作的偏移地址也称为有效地址EA
a. 有效地址的组成:位移量+基地址+变址
b. 不允许使用跨越前缀的情况:串处理的目的串必须用ES段;PUSH指令的目的和POP指令的源必须使用SS段;指令必须放在CS段 - 直接寻址方式:
a. MOV AX,[2000H]修改AX地址;
b. 如果在附加段中,应指定段前缀:MOV AX,ES:[values] - 寄存器间接寻址:
a. MOV AL,[BX]
b. 操作数只包含BX/BP,SI/DI使用BP省略段SS,其它则省略DS段;
c. 跨段使用:MOV AX,ES:[BX] - 寄存器相对寻址:
a. MOV AX,COUNT[BX];若(DS)=3000H,(BX)=1000H,CONUT=1000H,物理地址是:32000H
b. 操作数仅有基址/变址指定位移之和
c. 使用段跨越:MOV AX,ES:COUNT[BX] - 基址变址寻址:
a. 操作数的有效地址是基址和变址的内容之和
b. MOV AX,[BX][DI]
c. 使用段跨越:MOV AX,ES:]BX][DI] - 相对基址变址寻址:
a. 操作数的有效地址是基址变址和指定的位移量之和
b. MOV AX,MASK[BX][DI]
与转移有关的寻址方式
三个表示转移距离
- SHORT:-128~127
- NEAR:-32768~32767,IP修改
- FAR:转移超过正/负32k的字节,CS,IP都修改
- CS:IP指向下一条将执行的指令首地址,当转移时修改;
寻址方式
段内直接寻址
- JMP NEAR PTR AGAIN
- JMP SHORT NEXT
- 适用于条件转移及无条件转移[条件转移,位移量为8]
段内间接寻址
- JMP BX => IP=(BX)
- JMP NEAR PTR[BX] IP=(DS*16+BX)
- JMP SHORT [BX]
段内直接寻址
JMP FAR PTR OUTSEG
段间间接寻址
- 为了说明寻址两个单元,指令中需要加入DWORD
- JMP DWORD PTR [SI]
- JMP DWORD PTR [TABLE+BX]