读书人

怎么将字节内的位颠倒次序

发布时间: 2012-02-16 21:30:36 作者: rapoo

如何将字节内的位颠倒次序?
已知一个字节长的数据:B7 B6 B5 ... B1 B0,想将其颠倒为B0 B1 ... B5 B6 B7。
请问有没有比较简便的方法?谢谢各位高手的参与!!!

[解决办法]
比较简便的方法???

其实你的这个问题等效于
“将字节型数据中的第7位和第0位交换,第6位和第1位交换,第5位和第2位交换,第4位和第3位交换”!!
[解决办法]
循环移位,如颠倒AL
mov cl,8
rol al,cl
[解决办法]
不好说啊
[解决办法]
光循环移位还不行。

调用前数据在AL中,调用后翻转的字节在AL中。

ByteReverse Proc
mov dl,al
mov cx,8
_Reverse:
ror dl,1
mov al,dl
shl ax,1
loop _Reverse
mov al,ah
ByteReverse endp

[解决办法]
光循环移位还不行。

调用前数据在AL中,调用后翻转的字节在AL中。

ByteReverse Proc
mov dl,al
mov cx,8
_Reverse:
ror dl,1
mov al,dl
shl ax,1
loop _Reverse
mov al,ah
ByteReverse endp
-----------------------------
为何要 shl ax,1?
[解决办法]
最佳答案:

假设要将BL中的内容颠倒位序:

XOR BH,BH ;将BH清零,并清除进位标志

MOV CX,8
L1:RCL BL,1 ;从BL的位7到位0依次取出
RCR BH,1 ;以bit为单位,将从BL中取出的二进制位依次压入BH
LOOP L1

MOV BL,BH ;保存倒序后的结果

[解决办法]
mengshijie_1981()的方法确实更加简便!!

读书人网 >汇编语言

热点推荐