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);
}
