Suma kontrolna SIO
From Atariki
(Różnice między wersjami)
Wersja z dnia 22:42, 8 kwi 2010
Z angielskiego cyclic redundancy check, czyli cykliczny kod nadmiarowy, liczba dołączana do bloku przesyłanych danych, zapewniająca weryfikację poprawności przesłania.
W praktyce skrót CRC stosuje się często (acz niezbyt prawidłowo) na określenie sumy kontrolnej.
[Edytuj]
Suma kontrolna SIO
SIO oblicza sumę kontrolną dodając do siebie kolejne bajty przesyłanego bloku, przy czym do wyniku każdego z dodawań dodawane jest przeniesienie. Przykład obliczenia sumy kontrolnej 256 bajtów umieszczonych pod arbitralnie wybranym adresem w pamięci (oznaczonym etykietą DATA):
LDX #$00 STX CHKSUM CRC LDA DATA,X CLC ADC CHKSUM ADC #$00 STA CHKSUM INX BNE CRC
W języku C (wynik w zmiennej cks):
unsigned char cks = 0; unsigned short nck; int i; for (i = 0; i < 256; i++) { nck = cks + data[i]; cks = (nck > 0x00ff) ? ((nck & 0x00ff) + 1) : (nck & 0x00ff); }