寻址方式
缩写:
寄存器 reg/R8/R16/R32
内存单元 mem/m8/m16/m32
立即数 imm/imm8/imm16/imm32
累加器 (ax系列) al, ax, eax, rax
源src
目标dest
通常流水线的操作如下:
- 根据CS:IP取指令
- 译码
- 取源操作数(有些指令没有)
- 执行指令功能
- 写入结果(有些指令没有)
存储器寻址方式:
1. 直接寻址 :mov ax,[1234]
2. 寄存器间接寻址:mov ax,[bx]
8086 支持的间接寻址寄存器是bx,bp,si,di

3. 寄存器相对寻址:mov ax, [bx+1234] ,bp默认SS段寄存器,其他默认DS段寄存器
4. 基址变址寻址
5. 相对基址变址寻址
6. 比例因子寻址
6.1 相对比例因子寻址
6.2 基址变址比例因子寻址
6.3 相对基址变址比例因子寻址
探索汇编指令格式:

reg
06 00 000 110
0E 00 001 110
16 00 010 110
1E 00 011 110
26 00 100 110
2E 00 101 110
36 00 110 110
3E 00 111 110
随意写3句汇编

07 00 000 111 [bx]
04 00 000 100 [si]
05 00 000 101 [di]
观察发现只有最后3bit变化,从000~111共8种,排序如下:

reg
00 00 000 000 [bx+si]
01 00 000 001 [bx+di]
02 00 000 010 [bp+si]
03 00 000 011 [bp+di]
04 00 000 100 [si]
05 00 000 101 [di]
06 00 000 110 [imm]
07 00 000 111 [bx]
变址是imm8的情况:

reg
40 01 000 000 [bx+si+imm8]
41 01 000 001 [bx+di+imm8]
42 01 000 010 [bp+si+imm8]
43 01 000 011 [bp+di+imm8]
44 01 000 100 [si+imm8]
45 01 000 101 [di+imm8]
46 01 000 110 [bp+imm8]
47 01 000 111 [bx+imm8]
变址是imm16的情况:

reg
80 10 000 000 [bx+si+imm16]
81 10 000 001 [bx+di+imm16]
82 10 000 010 [bp+si+imm16]
83 10 000 011 [bp+di+imm16]
84 10 000 100 [si+imm16]
85 10 000 101 [di+imm16]
86 10 000 110 [bp+imm16]
87 10 000 111 [bx+imm16]

C781 1100011 1 10 000 001
C781 1100011 1 10 000 001
C783 1100011 1 10 000 011
C787 1100011 1 10 000 111
C687 1100011 0 10 000 111
C647 1100011 0 01 000 111
1 WORD PTR
0 BYTE PTR
01 offset8
10 offset816

Mod 00 无基址寄存器
Mod 01 偏移量是BYTE
Mod 10 偏移量是DWORD

浙公网安备 33010602011771号