一、寻址方式
1.立即数寻址
2.储存器寻址
物理地址 = 段基址 (BX/BP/SI/DI给出) + 16位数;
例:MOV AX,[FFFFH]
3.直接寻址
物理地址 = 操作数给出的有效地址(默认DS,可用段超越前缀改变);
例1:DS : [2000H];
例2:VAR DW FFFF
MOV AX,VAR;(MOV BX,DS:[FFFFH])
4.寄存器间接寻址
物理地址 = BX/SI/DI 中储存的有效地址;(默认DS)
或:物理地址 = SS中储存的有效地址;(默认SS)
可使用段超越前缀改变;
例:MOV AX,DS:[BX]
5.相对寻址
物理地址 = 寄存器间接寻址 + 有符号8/16位数
例:MOV AX,16H[BX]
6.基址变址寻址
物理地址 = 基址寄存器 + 变址寄存器
例:MOV AX,[BX][SI/DI](默认DS)/[BP][SI/DI](默认SS)
(可使用段超越改变默认)
7.相对基址变址寻址
物理地址 = 基址变址寻址 + 有符号8/16位数
例:MOV AX,-06H[BX][DI] ( [BX + DI + -06H] / -06H[BX + DI])
二、简单指令
1.数据传送
1)MOV(传送)
MOV reg/
mem , imm
MOV reg/mem/seg , reg
MOV reg/seg , mem
MOV reg/mem , seg
(注:MOV的目的操作数与源操作数类型必须一致,可通过WORD PTR/BYTE PTR指定类型)
(imm传给mem时立即数可以被理解为字,所以必须指明(PTR)类型)
2)XCHG(交换)
XCHG reg , reg/mem
同MOV,与mem操作时需指明类型
3)XLAT(换码指令)
XLAT ;AL<-[BX+AL]
2.堆栈操作
PUSH r16/m16/seg; 操作数进栈,SP-2
POP r16/m16/seg; 栈顶至目的操作数,SP+2
3.标志操作
LAHF/SAHL; 标志位第八位放AH/AH放标志位低八位
PUSHF/POPF; 标志寄存器进/出栈
CLC/STC; CF复/置位
CMC; CF位求反
CLD/STD; DF
复/置位
CLI/STI; IF复/置位
4.地址传送
LEA r16 , mem;
r16←[mem]
LDS
r16 , mem;
r16←[mem],DS←[mem+2]
LES
r16 , mem;
r16←[mem],ES←[mem+2]
附:MOV r16 , OFFSET mem; r16←[mem]