新浪博客

实现将寄存器高位和低位对称换位

2012-10-11 21:47阅读:
如何讲一个寄存器的高位和地位对称交换,如第0位与第31位交换,第1位与第30位交换,第2位与第29位交换,第3位与第28位交换,…………,第14位与第17位交换,第15位与第16位交换。
程序设计思路:本题目需要对寄存器进行大量的位运算。最基本的设计思想是依次从低位到高位取出源寄存器的内容,然后再把他们从高位到低位放置到目标寄存器。可以采用移位操作的方法,通过一位依次从低位取出目标寄存器的各个位,再将其放到目标寄存器的最低位,然后在对目标寄存器进行移位操作,送入相应位。
程序代码如下:

.global _start
.text
_start:
LDR R0, =0x55555555 @ 准备数据
MOV R1, #0
MOV R2, #32
BitChange:
AND R3, R0, #1 @ 源数据最低位送至R3
ORR R2, R3, R2, LSL #1 @ 将目标数据R2左移一
@位,将取出数据送至最低位
MOV R0, R0, LSR #1 @ 源数据右移一位
SUBS R1, R1, #1
BNE BitChange
Stop:
B Stop
.end
运行结果:
目标数据: R2=0xAAAAAAAA

我的更多文章

下载客户端阅读体验更佳

APP专享