ARM指令集中常用的存储和加载指令
—LDR字数据加载指令
—LDRB字节数据加载指令
—LDRH半字数据加载指令
—STR字数据存储指令
—STRB字节数据存储指令
—STRH半字数据存储指令
1、LDR指令
LDR指令的格式为:
LDR{条件}目的寄存器,<存储器地址>
LDR指令用于从存储器中将一个32位的字数据传送到目的寄存器中。该指令通常用于从存储器中读取32位的字数据到通用寄存器,然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。该指令在程序设计中比较常用,且寻址方式灵活多样,请读者认真掌握。
指令示例:
LDRR0,[R1];将存储器地址为R1的字数据读入寄存器R0。
LDRR0,[R1,R2];将存储器地址为R1+R2的字数据读入寄存器R0。
LDRR0,[R1,#8];将存储器地址为R1+8的字数据读入寄存器R0。
LDRR0,[R1,R2]!;将存储器地址为R1+R2的字数据读入寄存器R0,并将新地址R1+R2写入R1。
LDRR0,[R1,#8]!;将存储器地址为R1+8的字数据读入寄存器R0,并将新地址R1+8写入R1。
LDRR0,[R1],R2;将存储器地址为R1的字数据读入寄存器R0,并将新地址R1+R2写入R1。
LDRR0,[R1,R2,LSL#2]!;将存储器地址为R1+R2×4的字数据读入寄存器R0,并将新地址R1+R2×4写入R1。
LDRR0,[R1],R2,LSL#2;将存储器地址为R1的字数据读入寄存器R0,并将新地址R1+R2×4写入R1。
2、LDRB指令
LDRB指令的格式为:
LDR{条件}B目的寄存器,<存储器地址>
LDRB指令用于从存储器中将一个8位的字节数据传送到目的寄存器中,同时将寄存器的高24位清零。该指令通常用于从存储器中读取8位的字节数据到通用寄存器,然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。
指令示例:
LDRBR0,[R1];将存储器地址为R1的字节数据读入寄存器R0,并将R0的高24位清零。
LDRBR0,[R1,#8];将存储器地址为R1+8的字节数据读入寄存器R0,并将R0的高24位清零。
3、LDRH指令
LDRH指令的格式为:
LDR{条件}H目的寄存器,<存储器地址>
LDRH指令用于从存储器中将一个16位的半字数据传送到目的寄存器中,同时将寄存器的高16位清零。该指令通常用于从存储器中读取16位的半字数据到通用寄存器,然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。
指令示例:
LDRHR0,[R1];将存储器地址为R1的半字数据读入寄存器R0,并将R0的高16位清零。
LDRHR0,[R1,#8];将存储器地址为R1+8的半字数据读入寄存器R0,并将R0的高16位清零。
LDRHR0,[R1,R2];将存储器地址为R1+R2的半字数据读入寄存器R0,并将R0的高16位清零。
4、STR指令
STR指令的格式为:
STR{条件}源寄存器,<存储器地址>
STR指令用于从源寄存器中将一个32位的字数据传送到存储器中。该指令在程序设计中比较常用,且寻址方式灵活多样,使用方式可参考指令LDR。
指令示例:
STRR0,[R1],#8;将R0中的字数据写入以R1为地址的存储器中,并将新地址R1+8写入R1。
STRR0,[R1,#8];将R0中的字数据写入以R1+8为地址的存储器中。
5、STRB指令
STRB指令的格式为:
STR{条件}B源寄存器,<存储器地址>
STRB指令用于从源寄存器中将一个8位的字节数据传送到存储器中。该字节数据为源寄存器中的低8位。
指令示例:
STRBR0,[R1];将寄存器R0中的字节数据写入以R1为地址的存储器中。
STRBR0,[R1,#8];将寄存器R0中的字节数据写入以R1+8为地址的存储器中。
6、STRH指令
STRH指令的格式为:
STR{条件}H源寄存器,<存储器地址>
STRH指令用于从源寄存器中将一个16位的半字数据传送到存储器中。该半字数据为源寄存器中的低16位。
指令示例:
STRHR0,[R1];将寄存器R0中的半字数据写入以R1为地址的存储器中。
STRHR0,[R1,#8];将寄存器R0中的半字数据写入以R1+8为地址的存储器中。
ARM指令集存储和加载指 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)