用ARM指令集编写程序,求出一个字转成逆序,比如,将ABCD转成DCBA,其中ABCD是R0,通过对R0右移8位完成转换并简单描述每一条指令的作用
时间: 2023-12-15 15:03:44 浏览: 34
以下是用ARM指令集编写的一个将一个字转成逆序的程序,其中假设R0中存放的是要逆序的字。
```
start:
mov r1, r0 // 将要逆序的字存到另一个寄存器r1中备用
lsr r0, #24 // 取R0中的最高位8位,即字的最高位
lsl r1, #24 // 将R1中的最高位8位移到字的最低位
orr r0, r1, lsr #16 // 将R0中的最高位8位和R1中的次高位8位拼接到一起
lsr r1, #8 // 取R1中的次高位8位
orr r0, r1, lsl #8 // 将R0中的次高位8位和R1中的次低位8位拼接到一起
lsl r1, #8 // 将R1中的次低位8位移到字的次高位
orr r0, r1, lsr #24 // 将R0中的次低位8位和R1中的最高位8位拼接到一起
mov r1, #0 // 将返回值设为0
bx lr // 返回
```
程序开始时将要逆序的字存到另一个寄存器r1中备用,使用 `mov` 指令。接着使用 `lsr` 指令取R0中的最高位8位,即字的最高位,存到r0中。然后将R1中的最高位8位移到字的最低位,使用 `lsl` 指令。接着使用 `orr` 指令将R0中的最高位8位和R1中的次高位8位拼接到一起。然后取R1中的次高位8位,使用 `lsr` 指令。接着使用 `orr` 指令将R0中的次高位8位和R1中的次低位8位拼接到一起。然后将R1中的次低位8位移到字的次高位,使用 `lsl` 指令。最后使用 `orr` 指令将R0中的次低位8位和R1中的最高位8位拼接到一起,并将返回值设为0,使用 `mov` 指令,并使用 `bx lr` 指令返回。
相关推荐
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)