newlined 发表于 2023-11-29 14:06:52

请教大家,51汇编语言,如何比较两个BIT是否相同?

如题:如果定义了 位变量


B1    BIT    10H;
B2    BIT    11H;

51汇编怎样编程,比较这2个BIT是否相同?我以为有异或运算指令,但看指令表才知道字节才有异或指令,位运算没有,请给一个思路,谢谢。


   

gentleman 发表于 2023-11-29 15:31:51

位 直接用JB /JNB 判断就好了吧{:4_165:}

不知道有没有更好的方法

newlined 发表于 2023-11-30 11:31:04

咳,让大家笑话了,按照异或的运算规则就是了   ,a⊕b = (¬a ∧ b) ∨ (a ∧¬b)。

LAOXU 发表于 2023-11-30 12:56:56

C 语言,直接异或即可,B3 = B1 ^ B2;

汇编语言, 也简单, B3 = B1 ^ B2;
执行如下代码:
                MOV      C,B1
                JNB      B2,$+4
                CPL      C
                MOV      B3,C


LAOXU 发表于 2023-11-30 12:59:04

汇编中, 没有合适的单条指令, 可用多条指令模拟执行此功能.

newlined 发表于 2023-11-30 15:50:40

LAOXU 发表于 2023-11-30 12:56
C 语言,直接异或即可,B3 = B1 ^ B2;

汇编语言, 也简单, B3 = B1 ^ B2;


您真是高手,非常感谢。

newlined 发表于 2023-11-30 15:56:00

本帖最后由 newlined 于 2023-11-30 16:26 编辑

LAOXU 发表于 2023-11-30 12:59
汇编中, 没有合适的单条指令, 可用多条指令模拟执行此功能.
我就是这么做的,但程序比起4楼的高手来说,差不少{:smile:}

LAOXU 发表于 2023-11-30 18:15:54

newlined 发表于 2023-11-30 15:56
我就是这么做的,但程序比起4楼的高手来说,差不少

我的业余爱好就是汇编, 喜欢用汇编优化各种程序, 以尽少的代码量, 达到同等或更优的功能.

newlined 发表于 2023-12-1 07:59:59

LAOXU 发表于 2023-11-30 18:15
我的业余爱好就是汇编, 喜欢用汇编优化各种程序, 以尽少的代码量, 达到同等或更优的功能. ...

汇编语言用的这么好,竟然还是您的业余爱好,敬佩。

神农鼎 发表于 2023-12-1 08:24:51

LAOXU 发表于 2023-11-30 12:56
C 语言,直接异或即可,B3 = B1 ^ B2;

汇编语言, 也简单, B3 = B1 ^ B2;

请教老许,三个异或输入,具体是哪些应用场景才需要


下面这三个异或输入,有哪些可能的应用场景


https://www.stcaimcu.com/forum.p ... ptid=5330&pid=37836
还有后续新 STC8H的 MDU16 会换成 MDU32 的设计,就是少了些功能
页: [1] 2
查看完整版本: 请教大家,51汇编语言,如何比较两个BIT是否相同?