Witam, napisałem instrukcję liczącą CRC8 z 5 bajtów umieszczonych w pamięci RAM,
zależy mi na tym aby CRC mieściło się w jednym bajcie dlatego wybrałem CRC8.
Proszę aby ktoś sprawdził jego poprawność.
Szukałem na forum ale nic nie znalazłem w tej tematyce w ASM
zależy mi na tym aby CRC mieściło się w jednym bajcie dlatego wybrałem CRC8.
Proszę aby ktoś sprawdził jego poprawność.
; *********************** GENERATOR CRC **********************
; ******************** x^8 + x^5 + x^4 + 1 *******************
ldi crc,0x00 ;wpisanie wartości początkowej CRC
ldi XL,0x60 ;poczatek adresowania pamieci dane wejsciowe
ldi XH,0x00
ldi tmp2,0x31 ;wartość wielomianu CRC
loop:
ldi tmp3,1 ;wartość początkowa licznika liczącego 8 bitów
ld tmp,x
eor crc,tmp
loop2:
sbrs crc,0 rjmp nul
eor crc,tmp2
ror crc
sbr crc,0b10000000
rjmp ok
nul:
ror crc
ok:
clc ;wyczyszczenie flagi CARRY
rol tmp3 brne loop2 ;zliczanie 8 bitów
inc XL ;gdzy przeliczono 8bitow (bajt) pobierz kolejny do obliczen
cpi XL,0x65 ;adres ostatniej komórki z danymi -1
brne loop
nopSzukałem na forum ale nic nie znalazłem w tej tematyce w ASM
