2012-10-13 69 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