已知一个字节长的数据: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()的方法确实更加简便!!