8086CPU的寻址方式分为立即数寻址方式、寄存器寻址方式和存储器寻址方式
8086设计了多种存储器寻址方式
直接寻址方式 有效地址在指令中直接给出 默认的段地址在DS段寄存器,可使用段超越前缀改变 MOV AX,[2000H] ;AX←DS:[2000H] ;指令代码:A10020 MOV AX,ES:[2000H] ;AX←ES:[2000H] ;指令代码:26A10020 寄存器间接寻址方式 有效地址存放在基址寄存器BX或变址寄存器SI、DI中 默认的段地址在DS段寄存器,可使用段超越前缀改变 MOV AX,[SI] ;AX←DS:[SI] 寄存器相对寻址方式 段地址对应BX/SI/DI**寄存器默认是DS**,对应BP寄存器默认是SS;可用段超越前缀改变 有效地址=BX/BP/SI/DI+8/16位位移量 MOV AX,[DI+06H] ;AX←DS:[DI+06H] MOV AX,[BP+06H] ;AX←SS:[BP+06H] 基址变址寻址方式 段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变 有效地址=BX/BP+SI/DI MOV AX,[BX+SI] ;AX←DS:[BX+SI] MOV AX,[BP+DI] ;AX←SS:[BP+DI] MOV AX,DS:[BP+DI] ;AX←DS:[BP+DI] 相对基址变址寻址方式 段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变 有效地址=BX/BP+SI/DI+8/16位位移量 MOV AX,[BX+SI+06H] ;AX←DS:[BX+SI+06H] ;还可以用符号表示位移量 MOV AX,[SI+COUNT] ;COUNT是事先定义的变量或常量(就是数值) MOV AX,[BX+SI+WNUM] ;WNUM也是变量或常量 多种表达形式 同一寻址方式可以写成不同的形式: MOV AX,[BX][SI] ;等同于 MOV AX,[BX+SI] MOV AX,COUNT[SI] ;等同于 MOV AX,[SI+COUNT] MOV AX,WNUM[BX][SI] ;等同于 MOV AX,WNUM[BX+SI] ;等同于 MOV AX,[BX+SI+WNUM]