寻址方式

 

缩写:

寄存器 reg/R8/R16/R32

内存单元 mem/m8/m16/m32

立即数 imm/imm8/imm16/imm32

累加器 (ax系列) al, ax, eax, rax

src

目标dest

 

通常流水线的操作如下:

  1. 根据CSIP取指令
  2. 译码
  3. 取源操作数(有些指令没有)
  4. 执行指令功能
  5. 写入结果(有些指令没有)

 

存储器寻址方式:

1. 直接寻址 :mov ax,[1234]

 

2. 寄存器间接寻址:mov ax,[bx]

8086 支持的间接寻址寄存器是bxbpsidi

 

 

 

 

 

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~1118种,排序如下:

 

 

 

 

      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

posted @ 2020-09-07 22:04  八转达人  阅读(962)  评论(0)    收藏  举报