如何反转一个字节

ste*_*ana 6 assembly reverse byte avr atmega

我目前正在研究一个项目,碰巧我必须颠倒一个字节的顺序.我目前正在使用AVR Studio Mega32微控制器.

例如:

0000 0001 becomes 1000 0000
0001 0110 becomes 0110 1000
1101 1001 becomes 1001 1011
Run Code Online (Sandbox Code Playgroud)

首先,我有这个:

ldi r20,0b00010110
Run Code Online (Sandbox Code Playgroud)

反转字节的最简单方法是什么,使r20变为01101000?

joh*_*und 2

我现在无法提供AVR代码。但一般的位反转技术如下:

abcd efgh   p
badc fehg   p = ((p and 0AAh) shr 1) or ((p shl 1) and 0AAh)
dcba hgfe   p = ((p and 033h) shr 2) or ((p shl 2) and 033h)
hgfe dcba   p = ((p and 00Fh) shr 4) or ((p shl 4) and 0F0h)
Run Code Online (Sandbox Code Playgroud)