home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 10 / crc.asm next >
Encoding:
Assembly Source File  |  1988-11-16  |  1.7 KB  |  55 lines

  1. ;
  2. ;----------------------------------------------------------
  3. ; File       : CRC.ASM Vers. 1.0
  4. ; Last Edit  : 16.10.88
  5. ; Autor      : (c) G. Born
  6. ; Progr. Spr.: Assembler (A86 / MASM)
  7. ;
  8. ;        CRC 16 Generator für den 8086 Prozessor
  9. ; Es wird das Polynom y = x^16 + x^15 + x^2 + 1 verwendet
  10. ;----------------------------------------------------------
  11. ; Register: BX = CRC Register
  12. ;           DX = Zeiger in den Datenstrom
  13. ;           CX = Zahl der Daten
  14. ;           AH = Bit Counter
  15. ;           AL = Hilfsaccu
  16. ;----------------------------------------------------------
  17. ;
  18. CRC16:  XOR    BX,BX         ; Clear CRC Register
  19. ;
  20. LOOPX:  LEA    SI,DX         ; Datenzeiger laden
  21.         CLD                  ; Autoincrement
  22. ;
  23. LESE:   MOV    AH,08H        ; 8 Bit pro Zeichen
  24.         LODSB                ; Zeichen lesen & SI + 1
  25.         MOV    DL, AL        ; merke Zeichen
  26. ;
  27. ; CRC Generator
  28. ;
  29. CRC:    XOR    AL,BL         ; BCC - LSB XOR Zchn
  30.         RCR    AL,1          ; Ergebnis in Carry Bit
  31.         JNC    NULL          ; Serial Quotient ?
  32. ;
  33. ; Serial Quotient = 1
  34. ;
  35. EINS:   RCR    BX,1          ; SHIFT CRC right
  36.         XOR    BX,0010000000000001B ; Übertrag einblenden
  37.         JMP    TESTE         ; weitere Bits
  38. ;
  39. ; Serial Quotient = 0
  40. ;
  41. NULL:   RCR    BX,1          ; Shift CRC right
  42. ;
  43. TESTE:  MOV    AL,DL         ; Lese Zeichen
  44.         RCR    AL,1          ; Shift Zeichen 1 Bit right
  45.         MOV    DL,AL         ; merke Restzeichen
  46.         DEC    AH            ; 8 Bit fertig ?
  47.         JNZ    CRC           ; Zeichen weiter bearbeiten ?
  48.         LOOP   LESE          ; String bearbeitet?
  49. ;
  50. ; Ende -> Das CRC Ergebnis steht im Register BX
  51. ;
  52.          RET
  53.          END
  54.  
  55.