2012-10-10 25 views
1

我正在使用easy68k編寫程序集,如果測試位等於零,我正在尋找一種方法來創建分支[SR中的Z = 0]。大會摩托羅拉68k,如果測試位是零如何分支?

我搜索了很多,但沒有得到答案,

例如,我有這樣一行:

BTST #0,D2 ;Testing the LSB bit in data register 0 

現在我想辦法,或者如果存在,一個指令檢查Z在SR中,所以我可以知道被測位是否爲零。

+0

@Damien_The_Unbeliever,我之前看到的,但那些使用Z是BEQ,BNE似乎沒有用,因爲我看到它們是用於比較的,這裏沒有做的比較,我沒有比較兩個值。 是否沒有任何指令將單個定義位移動到數據寄存器? –

+0

@Damien_The_Unbeliever 所以我可以使用沒有操作數的指令'BEQ',它會根據'Z'值分支嗎? 或者我應該把任何操作數不使用它們?但是這樣做會重新影響「Z」值,對吧? –

回答

4

測試條件碼和基於它們的分支的指令通常被稱爲Bcc。這些條件分支指令的各個名稱是基於它們在緊接前面的指令是CMP時的含義。

但是,他們自己所做的只是測試條件代碼並採取分支。所以,你可以這樣做:

BTST #0,D2 ;Testing the LSB bit in data register 0 
BEQ LabelForZSet 
;Code for Z clear 
+0

非常感謝,它非常完美。 –

1

分公司在Z標誌:

btst #0,d2 
beq bitIsCleared 
; or 
bne bitIsSet 

Z標誌註冊:

btst #0,d2 
sne d0 
; d0 (byte only) will now be 0xFF if bit was set, 0x00 otherwise) 
; if a word is required add ext.w d0 
; if a long is required add also ext.l d0