美文网首页
6502芯片:逻辑操作(Logical Operations)

6502芯片:逻辑操作(Logical Operations)

作者: 苹果王子刘泽庆 | 来源:发表于2021-05-21 10:28 被阅读0次

    对于二进制数值而言,最简单的运算形式是逻辑与(logical AND)、逻辑或(logical OR)和异或(exclusive OR)。这些运算通过真值表(truth table)来表述。

    • 逻辑与真值表(Logical AND,AND)


      image.png
    • 逻辑或真值表(Logical ORA,ORA)


      image.png
    • 异或真值表(Exclusive OR,EOR)


      image.png

    上述真值表的规律可以概括为:

    • 当且仅当逻辑与AND的两个操作数都为真(用数字1表示)时,得到的结果才为真(用数字1表示),否则为假(用数字0表示)。
    • 当且仅当逻辑或ORA的两个操作数都为假(用数字0表示)时,得到的结果才为假(用数字0表示),否则为真(用数字1表示)。
    • 当且仅当异或EOR的一个输入为真,另一个为假时,互斥OR的结果为真(1),否则为假(0)。

    下面的表格中展示了对两个1比特(1bit)数值进行逻辑操作的结果。但是由于6502由8位寄存器和内存组成,每个指令将同时对两个8位值进行操作。


    image.png

    理解这些操作的性质和实际应用是很重要的,因为它们在其他算法中广泛使用:

    • 逻辑与操作通常起到一个过滤器的作用,并经常用于选择位的子集从一个值(例如,状态标志从外围控制芯片)。
    • 逻辑或允许将位插入到现有的值中(例如,在外围控制芯片中设置控制标志)。
    • 异或EOR指令允许设置或者反转所选位的数据。

    在6502芯片中,上述操作都是通过AND、ORA、EOR指令实现的。两个操作数中,一个是累加器的当前内容,另一个在内存中作为即时值或在指定的位置。操作的结果被放置在累加器中,并相应地设置0和负标志。

    ; Example logical operations
            AND #$0F        ;Filter out all but the least 4 bits
            ORA BITS,X      ;Insert some bits from a table
            EOR (DATA),Y    ;EOR against some data
    

    EOR指令的一个非常常见的用法是计算一个值的补码(或逻辑NOT)。这涉及到反转值中的每一位,最简单的计算方法是对每个位都是1的值进行单独的异或运算。

    ; Calculate the complement
            EOR #$FF
    

    宏库包含了16位和32位and、ORA、EOR和NOT操作的参考代码,尽管它们在解释器之外几乎没有用处。

    相关文章

      网友评论

          本文标题:6502芯片:逻辑操作(Logical Operations)

          本文链接:https://www.haomeiwen.com/subject/ovfijltx.html