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

2021-05-21  本文已影响0人  苹果王子刘泽庆

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

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

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


image.png

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

在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操作的参考代码,尽管它们在解释器之外几乎没有用处。

上一篇下一篇

猜你喜欢

热点阅读