1

6502アセンブリでのビット単位の操作はまだ新しいです。8つのフラグを持つバイトが欲しいのですが。これにより、メタスプライトのステータスが保存されます。

他のフラグを変更せずに特定のフラグを設定できるようにしたい。

私はORAを使用してそれらを1つに設定する方法を知っています:

  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常にすべてのビットに対してであるため、他のすべてのビットは変更されないことに注意してくださいX0 AND Xは常にであるため、ビット0のみが変更されます0

于 2013-01-19T02:17:54.733 に答える
1

私は特に6502に精通していませんが、一般的にビットをクリアし、クリアしたいビットを除くすべてのビットが設定された値を使用します。

于 2013-01-19T02:13:47.117 に答える