2012-10-13 124 views
1

校驗和計算爲數組中每個字節沒有進位的總和並放入寄存器B.數組的大小位於寄存器A中,而數組的大小在存儲器中,起始寄存器X.地址以68HC11彙編語言計算字節數組的校驗和

到目前爲止,我得到這個程序:

 ORG $C000 

     LDAA #N 
     LDAB #$00 
LOOP DECA 

     ADDB 0,X 
     INX 
     CMPA #0 
     BNE LOOP 
END 

我認爲這將做的工作,但我與新組件和68HC11。你能否告訴你是否看到錯誤?提前致謝。

+1

不知道該程序集,但不是你忘了遞減?哦,沒關係,你有DECA,它不是LOOP的一部分... :) – hyde

+0

好,所以DECA不應該成爲循環的一部分?這是一項任務。 – user43680

+1

如果您刪除了第一個DECA,並且用DECA替換了CMPA#0,那麼您的代碼會更有效。當然,你寫的代碼不會處理一個零長度的數組,這在實際中會發生。我同意@hyde;在計算校驗和時,你應該在實踐中使用更強大的方案(如他所建議的)。這些代碼很難編碼。 –

回答

1

這裏是處理零長度數組的代碼(將返回B = 0):

 LDAB #$00 
     LDAA #N 
     BEQ END 
LOOP ADDB 0,X 
     INX 
     DECA 
     BNE LOOP 
END