2012-07-18 241 views
1

所以我有這行代碼:CMP彙編語言

LOOP CMP Y, #0 
BEQ DONE - When it is equal go to DONE. 
ADD X, #1 - add decimal constant 1 to x. 
SUB Y, #1 - subtract decimal constant 1 from y 
B LOOP - branch loop (start the loop again) 
DONE ... 

我剛纔讀的CMP意味着減去RN(Y減0) 操作數這CMN意味着添加的操作數的RN( 0 + Y爲例)

第一行(LOOP CMP Y,#0):我認爲這只是數字0,這是真的比較ÿ?

+0

什麼CPU是這個大會?你可以用它來標記問題嗎? – 2012-07-18 22:46:44

+0

@AlexeyFrunze:不保證,但看起來6800ish。 – 2012-07-19 00:28:16

回答

3

是 - cmp(至少在大多數彙編語言)做了減法。它根據該減法的結果設置標誌,但隨後丟棄結果本身。

+0

是否有條件?由於下一行有BEQ,我不明白這一點。當CMP返回0時,處理流程是否改變? (0減0)。 – jamie 2012-07-19 18:25:17

+0

基於所述'eq'標誌,它被設置/通過先前'cmp'清除的狀態的BEQ分支。如果沒有cmp,BEQ會根據之前發生的任何影響eq標誌的指令作出反應。 – 2012-07-19 18:27:54

+0

阿好:)謝謝! – jamie 2012-07-19 19:09:21