2013-01-19 46 views
1

6502裝配體中的位運算還是新的。我想有一個字節, 有8個標誌。這將存儲我的元精靈的狀態。如何使用布爾算術將位設置爲0?

我希望能夠設置特定的標誌而不會改變其他標誌。

我知道如何使用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?

謝謝,我敢肯定我錯過了簡單的事情。

回答

5

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

注意,所有其他位未觸及,因爲1 AND X如何總是X每一個位。由於0 AND X始終爲0,因此只更改位0。

+0

謝謝。我知道這很簡單,我一定是錯過了我的文件。 – JohnnyStarr

+0

你可能是指「和」,而不是「eor」。 –

+0

如果您感覺冒險,您也可以使用未公開的操作碼'SAX'來組合AND/STA指令。 Presupposing .X包含您的位掩碼和.A狀態字節(反之亦然)SAX是一種簡單的方式來執行AND,存儲結果並保持CPU狀態標誌不變。 –

1

我對6502沒有特別的瞭解,但是要清楚一點,你通常會用除了你想清除的值之外的每一位設置的值。

相關問題