1

6502 汇编中的按位运算仍然是新的。我想要一个有 8 个标志的字节。这将存储我的元精灵的状态。

我希望能够在不更改其他标志的情况下设置特定标志。

我知道如何使用 ORA 将它们设置为一个:

  lda status
  ora #%00000001 ; set bit 0 to true
  sta status

我知道如何使用 EOR 来切换它们:

  lda status
  eor #%00000001 ; if bit 0 = true, then bit 0 = false and vise versa
  sta status

最后,我知道如何检查某位是否属实:

  lda status
  and #%00000001 ; if bit 0 = true then set overflow flag to true

但是如何在不改变任何其他标志的情况下将特定标志设置为 0?即使我使用 AND,我将如何强制它将所需的位设置为 0?

谢谢,我确定我错过了一些简单的东西。

4

2 回答 2

5

怎么样

lda status
and #%11111110 ; set bit 0 to false
sta status

请注意,所有其他位都不会被触及,因为对于每一位1 AND X都是如此。X只有位 0 更改,因为0 AND X始终是0

于 2013-01-19T02:17:54.733 回答
1

我对 6502 并不特别熟悉,但是要清除一点,您通常会使用一个值,除了您要清除的那个之外,每个位都已设置。

于 2013-01-19T02:13:47.117 回答