数据传输指令 表中未加粗的指令是符合 Cortex-M3堆栈操作的使用方 式,如果Rd是R13(即SP),则与POP/PUSH指令等效。 (LDMIA <- POP STMDB <->PUSH) Rd后面的“!”表示要自增( increment)或自减( Decrement)基址寄存器Rd的值,时机是在每次访问前( Before)或者访问后( After)。增减的单位是字(4个字节 感叹号还可以用于单一加载与存储指令- LDR/STR。 也就是“带预索引( Pre-indexing)”的LDR和STR。例如: LDR.W R0,[R1,#20];R0≤-R1,R1<-R1+20
数据传输指令 表中未加粗的指令是符合Cortex-M3堆栈操作的使用方 式,如果Rd是R13(即SP),则与POP/PUSH指令等效。 (LDMIA <-> POP, STMDB <->PUSH) Rd后面的“!”表示要自增(Increment)或自减( Decrement)基址寄存器Rd的值,时机是在每次访问前( Before)或者访问后(After)。增减的单位是字(4个字节 )。 感叹号还可以用于单一加载与存储指令----LDR/STR。 也就是“带预索引(Pre-indexing)”的LDR和STR。例如: LDR.W R0, [R1,#20]! ; R0 <- [R1], R1 <- R1 + 20
数据传输指令 预索引数据传输的常见用法 示例 功能描述 LDR [Rn, #offset]! 字/字节/半字/双字的带预索引加载(不做带符号扩 LDRBW Rd, [Rn, #offset] 展,没有用到的高位全清0译注) LDRHW Rd, [Rn, #offset] LDRD W Rd1, Rd2, [Rn, #offset]! LDRSB W Rd, [Rn, #offset] 字节/半字的带预索引加载,并且在加载后执行带符 LDRSH W Rd, [Rn, #offset]! 号扩展成32位整数 STR w Rd, [Rn, #offset] STRB W Rd, [Rn, #offset] STRH W Rd, [1 Rn, #offset]! STRD W Rd1, Rd2, [Rn, #offset]
数据传输指令 预索引数据传输的常见用法
数据传输指令 Cortex-M3除了支持“预索引”,还支持“后索 引( Post-indexing)”,后索引与预索引不同的是 先使用基址寄存器Rd的值作为数据传送的地址,待 数据到达后,再执行Rd<-Rd+ offset。如: STRW R0,[R1,#-12;后索引 该指令是把R0的值存储到地址R处的,在存 储完毕后,R1<R1+(12) 注意:[R1后面是没有“!”的,基址寄存器 是无条件被更新的
数据传输指令 Cortex-M3除了支持“预索引”,还支持“后索 引(Post-indexing)”,后索引与预索引不同的是 先使用基址寄存器Rd的值作为数据传送的地址,待 数据到达后,再执行Rd <- Rd + offset。如: STR.W R0, [R1], #-12 ;后索引 该指令是把R0的值存储到地址R1处的,在存 储完毕后, R1 <- R1 + (-12) 注意:[R1]后面是没有“!”的,基址寄存器 是无条件被更新的
数据传输指令 后索引的常见用法 例 功能描述 LDR. w Rd, [Rn], #offset 字/字节/半字/双字的带预索引加载(不做带符号扩 LDRB w Rd, [RI #。 Eset 展,没有用到的高位全清0译注) LDRH w Rd, [Rn], #offset LDRD W Rdl, Rd2, [Rn], #offset LDRSB W Rd, [Rn], #offset] 字节/半字的带预索引加载,并且在加载后执行带符 LDRSH w Rd, [Rn], #offset 号扩展成32位整数 STR W Rd, [Rn], #offset STRB w Rd, [Rn], #offset STRH W Rd, ],#o££set STRD W Rd1, Rd2, [Rn], #offset
数据传输指令 • 后索引的常见用法
数据传输指令 数据传输指令还包括 MRS/MSR,专门用于访问特殊功 能寄存器,如下图所示 特殊功能寄存器: p3R状态字存器(三台-) 31202282262222011615109876540 PRI MASK APSRINZ CVQ 中新屏 寄存器 Exospticn Number BASEPRI ICMT T CONTROL控制存器 其中xPSR程序状态寄存器又分为 ●应用程序 PSR(APSR) 中断号 PSR(IPSR 执行PSR(EPSR)
数据传输指令 数据传输指令还包括MRS/MSR,专门用于访问特殊功 能寄存器,如下图所示 其中xPSR程序状态寄存器又分为 ⚫ 应用程序PSR(APSR) ⚫ 中断号PSR(IPSR) ⚫ 执行PSR(EPSR)