编写程序清除第7位和第6位,设置第5位和第4位,以及切换位3,2,1和0?

时间:2013-11-08 00:07:03

标签: assembly bit-manipulation 68000 easy68k

  

内存中的一个字节,地址为$ 9000。

     

编写程序清除第7位和第6位,设置第5位和第4位,以及将第3,2,1和0位切换。

这就是我所拥有的,它不起作用。

     ORG    $9000

        MOVE.B  #00, D0

        MOVE    #7, D1
        BCLR    #7, D0

NEXT    BTST    D1,D0

        BEQ     ZERO
        BCHG    #7,D0

ZERO    SUB.B   #1,D1

        BCC     NEXT

EXIT    TRAP    #14

        END     $9000

非常感谢任何帮助

1 个答案:

答案 0 :(得分:3)

我不知道68k汇编,但为什么这么长的程序,为什么你需要比较和跳转,而它只是一些简单的按位运算。这是C

中的一个实现
a &= 0x3f; // 0011 1111 clear bit 7 and 6
a |= 0x30; // 0011 0000 set bit 5 and 4
a ^= 0x0f; // 0000 1111 toggle bit 3~0

转换为汇编时,它只需要3个简单的操作(如果需要,不包括可变负载和3个恒定负载),根本不需要跳转和比较