首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2012-02-16 
如何将字节内的位颠倒次序?已知一个字节长的数据:B7B6B5...B1B0,想将其颠倒为B0B1...B5B6B7。请问有没有比

如何将字节内的位颠倒次序?
已知一个字节长的数据: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()的方法确实更加简便!!

热点排行