Suma kontrolna SIO: Różnice pomiędzy wersjami
Przejdź do nawigacji
Przejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
| Linia 1: | Linia 1: | ||
Z angielskiego ''cyclic redundancy check'', czyli [http://pl.wikipedia.org/wiki/Cykliczny_kod_nadmiarowy cykliczny kod nadmiarowy], | Z angielskiego ''cyclic redundancy check'', czyli [http://pl.wikipedia.org/wiki/Cykliczny_kod_nadmiarowy cykliczny kod nadmiarowy], obliczana w pewien określony z góry sposób i dołączana do bloku przesyłanych danych wartość, zapewniająca weryfikację poprawności przesłania. | ||
W praktyce skrót CRC stosuje się często (acz niezbyt prawidłowo) na określenie [http://pl.wikipedia.org/wiki/Suma_kontrolna sumy kontrolnej]. | W praktyce skrót CRC stosuje się często (acz niezbyt prawidłowo) na określenie [http://pl.wikipedia.org/wiki/Suma_kontrolna sumy kontrolnej]. | ||
Wersja z 9 kwi 2010, 00:49
Z angielskiego cyclic redundancy check, czyli cykliczny kod nadmiarowy, obliczana w pewien określony z góry sposób i dołączana do bloku przesyłanych danych wartość, 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.
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);
}