所谓的寻址方式就是处理器指令中给出的信息来找到指令所需要的操作数的方式
1. 立即数寻址
立即数寻址,是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数,这个操作数被称为立即数,对应的寻址方式就叫做立即数寻址例如指令如下
ADD????R0,????R0,????#0x3f;????R0?R0+0x3f
在以上两条指令中,第一个源操作数即为立即数,要求以"#"为前缀。
2. 寄存器寻址
寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是一种执行效率较高的一种寻址方式。
ADD????R0,????R1,????R2;????R0?R1+R2
该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。
3. 寄存器间接寻址
寄存器间接寻址就是寄存器中存放的操作数是在内存中的地址
LDR????R0,????[R2]
在第一条指令中,一寄存器R2的值作为操作数的地址,在存储器中取得第一个操作数后与R1相加,结果存入寄存器R0中,第二条指令将以R1的值为地址的存储器中的数据传送到R0中
4. 基址变址寻址
基址变址寻址就是讲寄存器里的内容(基地址)与指令中给出的地址偏移量相加,从而得到操作数
LDR????R0,????[R0,????#0xf]
5. 相对寻址
与基址变址寻址方式相类似,相对寻址PC指针的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到的操作数的有效地址,以下程序段完成子程序的调用和返回。跳转指令BL采用了相对寻址方式:
BL????NEXT????????;跳转到子程序NEXT处执行
………..
NEXT
…………
MOV????PC,????LR????;从子程序返回
?
?
BL????NEXT????????;
时间: 2024-10-15 15:02:11