1 数据寻址
1.1 立即数寻址
; 立即数可以是数值、字符、符号、数值表达式
MOV AL, 8 ; MOV指令取多长与第一个操作数的寄存器有关
MOV AX, 1234
1.2 寄存器寻址
; 从一个寄存器到另一个寄存器
MOV AL, CL
MOV DS, AX ; 段寄存器必须通过寄存器寻址
1.3 存储器寻址
; 直接寻址,[]内是立即数
MOV AX, [1234H] ; 默认为DS段
MOV AX, ES[1234H] ; 段重设为ES段
; 寄存器间接寻址,[]内是寄存器
MOV AX, [BX]
; 基址寻址,基址寄存器BX、BP,加上偏移量
MOV BL, 10H[BP]
MOV BL, [BP+10H]
MOV BL, [BP]10H ; 以上三种一样
; 变址寻址,变址寄存器SI、DI,加上偏移量
MOV AX, 10H[SI]
; 基址变址寻址,变址寄存器+基址寄存器+偏移量
MOV AX, [BX][SI][10]
1.4 I/O 端口寻址
; 端口直接寻址
IN AL, 20H ; IN、OUT不能读写到H
OUT 60H, AX
; 端口间接寻址
MOV DX, 20H
IN AL, DX ; 从20H端口读
2 转移操作寻址
当程序发生转移时
- 需要给出即将转移去执行的指令的有效地址,替代 IP 寄存器的指
- 如果代码段不一样,还需要将 CS 换为新代码段的基址
操作数作为转移地址使用,称为 转移操作寻址
; 通过修改CS和IP所存储的数据,就可以改变要执行的指令
JMP 1234H:4321H ; CS=1234H,IP=4321H,修改CS段间转移
JMP AX ; 相当于 MOV IP, AX,不修改CS称为段内转移