承接自计算机组成原理复习(3)
指令系统
操作码拓展技术
以一图概之:
16位操作码相当于最多可以构成61条指令;
寻址方式
指令寻址
依靠PC(Program Counter)读取指令;
数据寻址
依靠指令中的操作进行数据的寻址;分为如下几个:
- 立即寻址
即立即数寻址,立即数有大小限制,取决于指令位数; - 直接寻址
给出数据地址,一般而言,在ARM指令集中为:
LDR R0, Address - 隐含寻址
仅仅给出一个操作数的地址,例如在8086中:
ADD Address
这里另一个操作数默认为AX - 间接寻址
顾名思义,例如:
LDR R0, [Address]
这句ARM指令是将Address中的地址对应的主存中的值赋给R0
一次间址可扩大寻址范围,多次间址每次的寻址范围变小; - 寄存器寻址
MOV R1, R0
这句话即寄存器寻址 - 寄存器间接寻址
LDR R0 , [R0]
这句ARM指令是将R0中的地址对应的主存中的值赋给R0; - 基址寻址
采用专用寄存器BR或者通用寄存器作为基地址寻址:
EA = R + A
其中形式地址A可变,寄存器中的值均不可变
有利于多道程序 - 变址寻址
EA = IX + A
其中地址A不可变,变址IX可变
用于处理数组问题 - 相对寻址
相对当前PC进行寻址,多用于程序浮动 - 堆栈寻址