1. gzyueqian
      13424082685
      首頁 > 新聞中心 > > 正文

      CRC16校驗的程序

      更新時間: 2007-01-23 15:40:00來源: 粵嵌教育瀏覽量:1407

      ;==========================================================
              DATA_BUFF       EQU        10H
              CRC_NUM         EQU        22H
              CRC_DATA        EQU        23H
              CRC_POINTER     EQU        30H
      ;==========================================================
              CRC_XORH        EQU        10H        ;11021=2^16+2^12+2^5+1
              CRC_XORL        EQU        21H
      ;==========================================================
                     ORG 0000H
                     AJMP MAIN
      MAIN:      MOV CRC_DATA,#DATA_BUFF
                 MOV CRC_NUM,#3
                 ACALL CRC
                 AJMP MAIN
      ;==========================================================
      ;               *****RC校驗子程序*****
      ;               多項式=2^16+2^12+2^5+1=11021H
      ;CRC_DATA-----進行CRC校驗的數據指針,保存需要進行CRC校驗的數據首址
      ;CRC_POINTER--緩沖保存CRC校驗數據首址
      ;CRC_NUM------保存所需進行CRC校驗的字節數
      ;R7-----------所有進行CRC校驗字節的位數,=(CRC_NUM+2)*8-16
      ;==========================================================
      CRC:       MOV R0,CRC_DATA
                 MOV R1,#CRC_POINTER
                 MOV R2,CRC_NUM
                 MOV A,CRC_NUM       ;R7=CRC_NUM*8
                 ADD A,#2
                 RL A
                 RL A
                 RL A
                 CLR C
                 SUBB A,#16           ;CRC碼為2個字節,16位
                 MOV R7,A
      CRC1:      MOV A,@R0            ;緩存原數據
                 MOV @R1,A
                 INC R0
                 INC R1
                 DJNZ R2,CRC1
                 CLR A                ;在原數據后添加2個零字節
                 MOV @R1,A
                 INC R1
                 MOV @R1,A
      CRC2:      MOV A,#CRC_POINTER   ;從一個字節開始左移一位
                 ADD A,CRC_NUM        ;共有CRC_NUM+2個字節
                 ADD A,#1             ;一個數據地址為
                 MOV R0,A             ;R0=CRC_POINTER+CRC_NUM+2-1
                 MOV A,CRC_NUM        ;計算參與移位計算的字節數
                 ADD A,#2             ;保存在R1中
                 MOV R1,A             ;R1=CRC_NUM+2
                 CLR C
      CRC3:      MOV A,@R0
                 RLC A
                 MOV @R0,A
                 DEC R0
                 DJNZ R1,CRC3         ;判斷每移動一位,所有參與移位的字節是否移完
                 JNC CRC4             ;進行異或條件判斷
                 MOV A,#CRC_XORH
                 XRL A,CRC_POINTER
                 MOV CRC_POINTER,A
                 MOV A,#CRC_XORL
                 XRL A,CRC_POINTER+1
                 MOV CRC_POINTER+1,A
      CRC4:      DJNZ R7,CRC2         ;判斷移位是否結束

      CRC_END:
                RET

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲情a成黄在线观看动漫尤物 | 色婷婷色综合缴 | 日韩最新综合一区二区 | 最精品国产手机在线 | 日本一道欧美AⅤ视频 | 亚洲欧美在线另类 |