ARM指令的寻址方式有几种?试分别举例说明
时间: 2023-08-15 22:05:06 浏览: 222
ARM指令的寻址方式有12种,具体如下:
1. 立即数寻址(Immediate Addressing):将一个立即数作为操作数,例如:MOV R1, #10 将10这个立即数赋给寄存器R1。
2. 寄存器寻址(Register Addressing):直接使用寄存器作为操作数,例如:MOV R1, R2 将寄存器R2的值复制到寄存器R1中。
3. 寄存器间接寻址(Register Indirect Addressing):使用寄存器存储的地址作为操作数,例如:LDR R1, [R2] 将R2存储的地址所对应的内存单元中的数据读入R1中。
4. 寄存器相对偏移寻址(Register Offset Addressing):使用寄存器存储的地址加上一个偏移量作为操作数,例如:LDR R1, [R2, #4] 将R2存储的地址加上4所得到的地址对应的内存单元中的数据读入R1中。
5. 寄存器相对变址寻址(Register Pre-indexed Addressing):使用寄存器存储的地址加上一个偏移量作为操作数,并将计算后的地址存储回寄存器,例如:LDR R1, [R2, #4]! 将R2存储的地址加上4所得到的地址对应的内存单元中的数据读入R1中,并将计算后的地址存储回R2中。
6. 寄存器相对变址后调寻址(Register Post-indexed Addressing):使用寄存器存储的地址作为操作数,并将计算后的地址存储回寄存器,例如:LDR R1, [R2], #4 将R2存储的地址所对应的内存单元中的数据读入R1中,并将计算后的地址加上4存储回R2中。
7. 基址变址寻址(Base with Index Addressing):使用两个寄存器存储的地址相加作为操作数,例如:LDR R1, [R2, R3] 将R2存储的地址加上R3存储的地址所得到的地址对应的内存单元中的数据读入R1中。
8. 多寄存器寻址(Multiple Register Addressing):使用多个寄存器存储的地址作为操作数,例如:LDMIA R2!, {R1-R3} 将R2存储的地址所对应的内存单元中的数据读入R1-R3中,并将计算后的地址存储回R2中。
9. 堆栈寻址(Stack Addressing):使用堆栈指针寄存器存储的地址作为操作数,例如:LDR R1, [SP, #4] 将堆栈指针加上4所得到的地址对应的内存单元中的数据读入R1中。
10. 基址变址加寄存器间接寻址(Base with Index and Register Indirect Addressing):使用一个寄存器存储的地址加上另一个寄存器存储的地址所得到的地址作为操作数,例如:LDR R1, [R2, R3, LSL #2] 将R2存储的地址加上R3存储的地址左移2位后所得到的地址所对应的内存单元中的数据读入R1中。
11. 基址变址加立即数寻址(Base with Index and Immediate Addressing):使用一个寄存器存储的地址加上一个立即数所得到的地址作为操作数,例如:LDR R1, [R2, #12] 加上12所得到的地址所对应的内存单元中的数据读入R1中。
12. 基址变址加寄存器相对偏移寻址(Base with Index and Register Offset Addressing):使用一个寄存器存储的地址加上另一个寄存器和一个偏移量所得到的地址作为操作数,例如:LDR R1, [R2, R3, LSL #2]! 将R2存储的地址加上R3存储的地址左移2位后再加上一个偏移量所得到的地址所对应的内存单元中的数据读入R1中,并将计算后的地址存储回R2中。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)