Dies ist eine alte Version des Dokuments!


CRC-Berechnung

In diversen U880-Programmen, z.B. EPROM-Software, wird oftmals eine Prüfsumme ausgegeben. Dabei handelt es sich fast immer um CRC-16 und das CCITT-Polynom

CRC-CCITT (CRC-16) x16 + x12 + x5 + 1

s. Wikipedia.

Als Startwert wird eigentlich immer 0FFFFh genommen.

In Assembler sieht die CRC-Routine wie folgt aus.

crc:		ld	hl, 0FFFFh
crc1:		ld	a, (de)
		xor	h
		ld	h, a
		rrca
		rrca
		rrca
		rrca
		and	0Fh
		xor	h
		ld	h, a
		rrca
		rrca
		rrca
		push	af
		and	1Fh
		xor	l
		ld	l, a
		pop	af
		push	af
		rrca
		and	0F0h
		xor	l
		ld	l, a
		pop	af
		and	0E0h
		xor	h
		ld	h, l
		ld	l, a
		inc	de
		dec	bc
		ld	a, b
		or	c
		jr	nz, crc1
		ret
  • cpm/crc.1314692126.txt.gz
  • Zuletzt geändert: 2011/08/30 08:15
  • von volkerp