; ********************************************** ***
CalcCRC proc
push CX;
push BX; - Збереження регістрів
push DI;/
push DX
mov DI, DX; Завантаження індексу качану масиву
mov DX, 8
mov CX, BX; Установка лічільніка циклу
shl CX, 1;
shl CX, 1; - CX = CX * 8
shl CX, 1;/
mov AX, 65535; Очищення регістра результату
mov BX, ES: [DI]
CRNext: loop CRNextTest; Цикл за словами масиву
pop DX
pop DI;
pop BX;-Відновлення регістрів
pop CX;/
ret
CRNextTest:
push AX
mov AX, BX
and AX, 1b
jz Shift
pop AX
xor AL, 31h
push AX
Shift: mov AX, DX
jz NewWord
shr BX, 1
dec DX
jmp EndShift
NewWord:
mov DX, 8
inc DI
mov BX, ES: [DI]
EndShift
pop AX
jmp CRNext
CalcCRC endp
; ********************************************** ***
END
; ************************************** *********** br/>