home *** CD-ROM | disk | FTP | other *** search
- ;
- ;----------------------------------------------------------
- ; File : CRC.ASM Vers. 1.0
- ; Last Edit : 16.10.88
- ; Autor : (c) G. Born
- ; Progr. Spr.: Assembler (A86 / MASM)
- ;
- ; CRC 16 Generator für den 8086 Prozessor
- ; Es wird das Polynom y = x^16 + x^15 + x^2 + 1 verwendet
- ;----------------------------------------------------------
- ; Register: BX = CRC Register
- ; DX = Zeiger in den Datenstrom
- ; CX = Zahl der Daten
- ; AH = Bit Counter
- ; AL = Hilfsaccu
- ;----------------------------------------------------------
- ;
- CRC16: XOR BX,BX ; Clear CRC Register
- ;
- LOOPX: LEA SI,DX ; Datenzeiger laden
- CLD ; Autoincrement
- ;
- LESE: MOV AH,08H ; 8 Bit pro Zeichen
- LODSB ; Zeichen lesen & SI + 1
- MOV DL, AL ; merke Zeichen
- ;
- ; CRC Generator
- ;
- CRC: XOR AL,BL ; BCC - LSB XOR Zchn
- RCR AL,1 ; Ergebnis in Carry Bit
- JNC NULL ; Serial Quotient ?
- ;
- ; Serial Quotient = 1
- ;
- EINS: RCR BX,1 ; SHIFT CRC right
- XOR BX,0010000000000001B ; Übertrag einblenden
- JMP TESTE ; weitere Bits
- ;
- ; Serial Quotient = 0
- ;
- NULL: RCR BX,1 ; Shift CRC right
- ;
- TESTE: MOV AL,DL ; Lese Zeichen
- RCR AL,1 ; Shift Zeichen 1 Bit right
- MOV DL,AL ; merke Restzeichen
- DEC AH ; 8 Bit fertig ?
- JNZ CRC ; Zeichen weiter bearbeiten ?
- LOOP LESE ; String bearbeitet?
- ;
- ; Ende -> Das CRC Ergebnis steht im Register BX
- ;
- RET
- END
-