汇编语言求助:怎样把一个字节中的两位对调?
如题:假设要把A(0101 0000)的第5位和第6位对调,变成0011 0000,通过什么指令可以实现? 复制一份 左移,用AND屏蔽无关位,暂存。再复制一份,右移,用AND屏蔽无关位,暂存。然后将两个暂存OR本帖最后由 sfes 于 2013-12-1 12:02 编辑
mov c,p.5
mov p.6,c
sfes 发表于 2013-12-1 12:00
mov c,p.5
mov p.6,c
不会吧,这样也可以? 本帖最后由 GZLJZ 于 2013-12-1 13:40 编辑
tonyone 发表于 2013-12-1 13:32
不会吧,这样也可以?
是可以,C是位标志,但还有用相同语句,复制位6到位5 如果是 c的话,就太好办了 mov c,acc.5 mov bit_add,c mov c,acc.6 mov acc.5,c mov c,bit_addmov acc.6,c GZLJZ 发表于 2013-12-1 13:39
是可以,C是位标志,但还有用相同语句,复制位6到位5
我是在想mov c,p.5后,p.5应该还是原来的值吧 1a2b3c 发表于 2013-12-1 15:30
mov c,acc.5 mov bit_add,c mov c,acc.6 mov acc.5,c mov c,bit_addmov acc.6,c
这个比较好理解 直接用位操作指令也可~~~~~~~~~~ lxa0 发表于 2013-12-1 16:12
直接用位操作指令也可~~~~~~~~~~
愿闻其详 只能进行位操作,有两种方案:直接将其读到ACC中再进行‘位’操作,或者进行带‘进位位’右移,将第5位和第6位分别移到CY,然后互换。。。 MOV C,ACC.5
MOV F0,C
MOV C,ACC.6
MOV ACC.5,C
MOV C,F0
MOV ACC.6,C
试试以上这个,在KEIL中调试过, ycheng2004 发表于 2013-12-1 20:01
MOV C,ACC.5
MOV F0,C
MOV C,ACC.6
不错,好理解 楼上的方法最好用! 移位然后用CY咯
页:
[1]