【发布时间】:2020-04-13 00:11:13
【问题描述】:
我目前正在处理一个问题,希望我构建一个子程序来反转 R16 中的位。
00000011 => 11000000
or
10101000 => 00010101
对于我们使用 AVR 子集的类,子例程需要在 norfair 中工作。
这是我目前所拥有的,任何帮助将不胜感激!
ldi r16,3 ;00000011
【问题讨论】:
-
你可以使用查找表吗?例如对于 4 位的一半。在没有位反转指令的 ISA 上,这通常是最快的。
-
我不相信这么伤心
-
你对要做什么算法有任何想法吗?对于初学者怎么样,我建议您右移 R16,找出从它的末尾移出的位,然后左移一个临时寄存器并将该位放在最不重要的位置。你能看到之后要做什么来完成这个程序吗?
-
这是反转字节中的位,而不是反转字节
-
糟糕。让我改一下标题
标签: assembly bit-manipulation avr atmega