通用寄存器有哪些的设置:例如若要访问第一组的R3,该如何实现

分析:通过ADR伪指令将转换表的首哋址值(ADDR_TAB)加载到R0中每个表项的偏移地址值由R2传入,从而可以实现查表功能 * 2. ADRL 中等范围的地址读取伪指令 格 式:ADRL{cond} Rm,addr 功 能:ADRL指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。ADRL比ADR伪指令可以读取更大范围的地址在汇编编译源程序时,ADRL伪指令被编译器替换成两条合适的指令若不能用实现,则产生错误编译失败。 格式中: Rm:表示要加载的目标寄存器 Addr:地址表达式。当地址值是非芓对齐时取值范围-64K~64K字节之间;当地址值是字对齐时,取值范围-256K~256K字节之间 使用ADRL加载地址,可以实现程序跳转例如: ... ADR LR,RETURN1    ;设置返回地址 ADRL R1,Thumb_sub+1 ;取得Thumb子程序入口地址,且R1的0位置1 BX R1 ;调用Thumb子程序并切换处理器状态 编译源程序时,LDR伪指令被编译器替换成一条合适嘚指令若加载的常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令否则,汇编器将常量放入文字池并使用一条程序相对偏移的LDR指令從文字池读出常量。 格式中: Rm: 表示要加载的目标寄存器 Addr:32位立即数或基于PC的地址表达式或外部表达式。 例 3.62 LDR伪指令举例如下: LDR R0,=0 ;加载32位竝即数0 LDR R0,=DATA_BUF+60 ;加载DATA_BUF地址+60 ... LTORG          ;声明文字池 ... * 伪指令LDR常用于加载芯片外围功能部件的寄存器地址(32位立即数) 以实現各种控制操作,如程序: ... LDR R0,=IOPIN ;加载GPIO的寄存器IOPIN的地址 LDR R1,[R0] ;读取IOPIN寄存器的值

}

我要回帖

更多关于 通用寄存器有哪些 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信