马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
说明 这些指令与上面的字和无符号字节的指令形式类似,不同之处在于,在这些指令中立即数偏移量限定在8位,寄存器偏移量也不可经过移位得到。 在图中,P、U、W、和L位的作用与单字和无符号字节数据传送指令的二进制编码图中的P、U、W和L位的作用相同。S和H位用来定义所传送的操作数的类型,如图所列 注意:这些位的第4种组合在这种格式中没有使用,它对应于无符号字节的数据类型。 无符号字节的传送应使用上面的格式。因为在存入有符号数据和无符号数据间没有差别,这条指令唯一的相关形式是: 读取有符号字节、有符号半字或无符号半字。 存入有符号字节、有符号半字或无符号半字。 无符号数在读取时用0扩展到32位;有符号数读取时则用其符号扩展到32位。 汇编格式 前变址格式为: LDR|STR{<cond>}H|SH|SBRd, [Rn.<offset>]{!} 后变址格式为: LDR|STR{<cond>}H|SH|SBRd, [Rn.<offset>] 式中,<offset>是#±<8位立即数>或#±Rm;H|SH|SB选择传送数据类型;其他部分的汇编格式与传送字和无符号字节相同。 举例 LDREQSH R11,[R6];(有条件地)R11<-[R6],加载16位半字,有符号扩展到32位。 LDRH R1,[R0,#20]; R1<-[R0+R2],加载16位半字,零扩展到32位。 STRH R4,[R3,R2]!; R4<-[R3+R2],存储最低的有效半字到R3+R2
;地址开始的2个字节,地址写回到R3
LDRSB R0,constf;加载位于标号constf地址的字节,有符号扩展 LDRH R6,[R2],#2;将R2地址上的半字数据读出到R6,高16位用
;令扩展R2=R2+2
LDRSH R1,[R9];将R9地址上的半字数据读出到R1,高16位用符号位扩展 STRH R0,[R1,R2,LSL#2];将R0的内容送到(R1+R2×4)对应的内存中 STRNEH R0,[R2,#960]!;(有条件的)将R0的内容送到(R2+960)的内存中R2+960 注意事项 与前面所讲的字和无符号字节传送指令的情况相同,对使用R15和寄存器操作数也有一定的限制。 所有半字传送应使用半字对齐的地址。 凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网 |