计算机组成原理——9种常用寻址方式
R=寄存器,E=有效地址,S=操作数,(A)=A中的内容,代码不特别说明表示8086汇编语言,PC=程序计数器(指向当前指令的下一条)
1、常用寻址方式
- 隐含寻址
- 立即寻址
- 寄存器直接寻址
- 寄存器间接寻址
- 直接寻址
- 间接寻址
- 相对寻址
- 基址寻址
- 变址寻址
2、寻址方式介绍
1) 隐含寻址
含义:操作数隐含的由累加器给出。(即某指令由固定的操作数,不需要给出)
例子:8086汇编语言 CWD;把AX中的内容按符号位拓展成DX,AX双字
2)立即寻址
含义:指令中直接给出相应的操作数。
例子: MOV AX,1234H;——1234H就是采用立即寻址
3)寄存器直接寻址
含义:指令中给出寄存器号R,操作数存放在R中
E=R,S=(E)=( R )
例子:MOV AX,BX——操作数在BX中
4) 寄存器间接寻址
含义:指令中给出寄存器号R,R中存放操作数的有效地址
E=( R ),S=(E)=(( R ))
例子:MOV AX,[SI]
5) 直接寻址
含义:指令中给出操作数的有效地址
E=A,S=(E)=(A)
例子:MOV AX,[1234H]
6) 间接寻址
含义:指令中给出存放有效地址E的存储单元地址。
E=(A),S=(E)=((A))
理论上讲可以多次间接寻址,但大多数计算机只允许一次(由于A的寻址范围不足以覆盖整个存储空间)
7)相对寻址
含义:指令中给出相对于PC的偏移量A
E=(PC)+A,S=(E)=((PC)+A)
注:A是个带符号数,一般用补码表示,若A的位数与PC不一致,需要带符号填充。
8)基址寻址
含义:指令中给出相对于基址寄存器R的偏移量
E=( R )+A,S=(E)=(( R )+A)
注:A是个带符号数,一般用补码表示,若A的位数与R不一致,需要带符号填充。
9) 变址寻址
含义:指令中给出相对变址寄存器R的偏移量
E=( R )+A,S=(E)=(( R )+A)
注:A是个带符号数,一般用补码表示,若A的位数与R不一致,需要带符号填充。
3、寻址空间大小
设定机器字长位n,A的位数位m
寻址方式 | 寻址大小 |
---|---|
直接寻址 | 2m-1 |
寄存器间接寻址 | 2n-1 |
间接寻址 | 2n-1 |
相对寻址 | 2n+2m-2 |
基址寻址 | 2n+2m-2 |
变址寻址 | 2n+2m-2 |