tonyone 发表于 2013-12-1 11:42:56

汇编语言求助:怎样把一个字节中的两位对调?

如题:假设要把A(0101 0000)的第5位和第6位对调,变成0011 0000,通过什么指令可以实现?

51EDA技术 发表于 2013-12-1 11:51:38

复制一份 左移,用AND屏蔽无关位,暂存。再复制一份,右移,用AND屏蔽无关位,暂存。然后将两个暂存OR            

                                                                                                            

sfes 发表于 2013-12-1 12:00:47

本帖最后由 sfes 于 2013-12-1 12:02 编辑

mov c,p.5
mov p.6,c

tonyone 发表于 2013-12-1 13:32:16

sfes 发表于 2013-12-1 12:00
mov c,p.5
mov p.6,c

不会吧,这样也可以?

GZLJZ 发表于 2013-12-1 13:39:09

本帖最后由 GZLJZ 于 2013-12-1 13:40 编辑

tonyone 发表于 2013-12-1 13:32
不会吧,这样也可以?

是可以,C是位标志,但还有用相同语句,复制位6到位5

zhuzaixingfu 发表于 2013-12-1 15:02:23

如果是 c的话,就太好办了

1a2b3c 发表于 2013-12-1 15:30:20

mov c,acc.5 mov bit_add,c mov c,acc.6 mov acc.5,c mov c,bit_addmov acc.6,c

tonyone 发表于 2013-12-1 15:52:55

GZLJZ 发表于 2013-12-1 13:39
是可以,C是位标志,但还有用相同语句,复制位6到位5

我是在想mov c,p.5后,p.5应该还是原来的值吧

tonyone 发表于 2013-12-1 15:53:45

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:44

直接用位操作指令也可~~~~~~~~~~

tonyone 发表于 2013-12-1 16:16:08

lxa0 发表于 2013-12-1 16:12
直接用位操作指令也可~~~~~~~~~~

愿闻其详         

奮闘ing 发表于 2013-12-1 18:34:05

只能进行位操作,有两种方案:直接将其读到ACC中再进行‘位’操作,或者进行带‘进位位’右移,将第5位和第6位分别移到CY,然后互换。。。

ycheng2004 发表于 2013-12-1 20:01:22

                   MOV   C,ACC.5
                   MOV   F0,C
                   MOV   C,ACC.6
                   MOV   ACC.5,C
                   MOV   C,F0
                   MOV   ACC.6,C
试试以上这个,在KEIL中调试过,

tonyone 发表于 2013-12-3 23:47:32

ycheng2004 发表于 2013-12-1 20:01
MOV   C,ACC.5
                   MOV   F0,C
                   MOV   C,ACC.6


不错,好理解

ddcchh 发表于 2013-12-4 09:58:52

楼上的方法最好用!

xou822 发表于 2013-12-4 10:23:48

移位然后用CY咯
页: [1]
查看完整版本: 汇编语言求助:怎样把一个字节中的两位对调?