Код: Выделить всё
; Это вход для произвольного массива,
; адрес и длина которого должны уже
; быть в XL,XH,r17 соответственно .
; Таблицу нужно размещать на границе "страницы",
; чтобы адрес ее был .org 0x?00 или 0x?80 .
;
; Результат в R24 (Lo), R25( Hi)
;
CRC_R: push ZL
push ZH
ldi r25,0xFF
ldi r24,0xFF
;
crc_l1: ld ZL,x+
eor ZL,r25 ; i=Hi^[x]
ldi ZH,high(CRCHi*2)
lpm
eor r24,r0 ; Hi=Lo^CRCHi[i]
mov r25,r24
ldi ZH,high(CRCLo*2)
lpm
mov r24,r0 ; Lo=CRCLo[i]
dec r17
brne crc_l1
;
crc_22: pop ZH
pop ZL
ret
.org 0xF00
CRCHi:
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
.db 0x01,0xC0,0x80,0x41
.db 0x01,0xC0,0x80,0x41
.db 0x00,0xC1,0x81,0x40
CRCLo:
.db 0x00,0xC0,0xC1,0x01
.db 0xC3,0x03,0x02,0xC2
.db 0xC6,0x06,0x07,0xC7
.db 0x05,0xC5,0xC4,0x04
.db 0xCC,0x0C,0x0D,0xCD
.db 0x0F,0xCF,0xCE,0x0E
.db 0x0A,0xCA,0xCB,0x0B
.db 0xC9,0x09,0x08,0xC8
.db 0xD8,0x18,0x19,0xD9
.db 0x1B,0xDB,0xDA,0x1A
.db 0x1E,0xDE,0xDF,0x1F
.db 0xDD,0x1D,0x1C,0xDC
.db 0x14,0xD4,0xD5,0x15
.db 0xD7,0x17,0x16,0xD6
.db 0xD2,0x12,0x13,0xD3
.db 0x11,0xD1,0xD0,0x10
.db 0xF0,0x30,0x31,0xF1
.db 0x33,0xF3,0xF2,0x32
.db 0x36,0xF6,0xF7,0x37
.db 0xF5,0x35,0x34,0xF4
.db 0x3C,0xFC,0xFD,0x3D
.db 0xFF,0x3F,0x3E,0xFE
.db 0xFA,0x3A,0x3B,0xFB
.db 0x39,0xF9,0xF8,0x38
.db 0x28,0xE8,0xE9,0x29
.db 0xEB,0x2B,0x2A,0xEA
.db 0xEE,0x2E,0x2F,0xEF
.db 0x2D,0xED,0xEC,0x2C
.db 0xE4,0x24,0x25,0xE5
.db 0x27,0xE7,0xE6,0x26
.db 0x22,0xE2,0xE3,0x23
.db 0xE1,0x21,0x20,0xE0
.db 0xA0,0x60,0x61,0xA1
.db 0x63,0xA3,0xA2,0x62
.db 0x66,0xA6,0xA7,0x67
.db 0xA5,0x65,0x64,0xA4
.db 0x6C,0xAC,0xAD,0x6D
.db 0xAF,0x6F,0x6E,0xAE
.db 0xAA,0x6A,0x6B,0xAB
.db 0x69,0xA9,0xA8,0x68
.db 0x78,0xB8,0xB9,0x79
.db 0xBB,0x7B,0x7A,0xBA
.db 0xBE,0x7E,0x7F,0xBF
.db 0x7D,0xBD,0xBC,0x7C
.db 0xB4,0x74,0x75,0xB5
.db 0x77,0xB7,0xB6,0x76
.db 0x72,0xB2,0xB3,0x73
.db 0xB1,0x71,0x70,0xB0
.db 0x50,0x90,0x91,0x51
.db 0x93,0x53,0x52,0x92
.db 0x96,0x56,0x57,0x97
.db 0x55,0x95,0x94,0x54
.db 0x9C,0x5C,0x5D,0x9D
.db 0x5F,0x9F,0x9E,0x5E
.db 0x5A,0x9A,0x9B,0x5B
.db 0x99,0x59,0x58,0x98
.db 0x88,0x48,0x49,0x89
.db 0x4B,0x8B,0x8A,0x4A
.db 0x4E,0x8E,0x8F,0x4F
.db 0x8D,0x4D,0x4C,0x8C
.db 0x44,0x84,0x85,0x45
.db 0x87,0x47,0x46,0x86
.db 0x82,0x42,0x43,0x83
.db 0x41,0x81,0x80,0x40