发表于:2006-05-26 13:10:00
5楼
可以自己做啊,例如
设需要交换的2个Byte分别为Byte1和Byte2
如果Byte1是Word的低位,Byte2是Word的高位,那么先将Byte2复制1个副本(利用Mov指令把Byte2所在的字复制1份),然后将Byte2的高8位清零(和#00FF做个AND),再将Byte1所在的Word左移8位(执行SLD两次)后的结果或(OR)一次即可。这样Byte1就复制到Byte2所在的位置了。然后利用刚才所保存的Byte2的副本,按这个原理把Byte2复制到Byte1所在的位置即可。
对于其他情况,比如Byte1是Word的高位,Byte2是Word的低位;或者Word的高位,Byte2也是Word的高位;或者Word的低位,Byte2也是Word的低位,那么可以先做个预处理(首先将Word1和Word2都通过移位指令移动后使之满足Byte1是Word的低位,Byte2是Word的高位这样的条件)后,再次调用上述的子程序,然后再把根据先前所做的预处理把数据恢复即可。