⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p676_koq.lst

📁 PIC16f676/630移植的keeloq滚动码汇编程序,节省一个外部EEPROM,并增加I/O端口.
💻 LST
📖 第 1 页 / 共 5 页
字号:
                      00347 ;
MPASM 03.60 Released                             P676_KOQ.ASM   3-4-2005  17:50:49         PAGE  8


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00348 ; FUNCTION      : EEREAD ()                             
                      00349 ;
                      00350 ; DESCRIPTION   : READ 16 BIT VALUE FROM EEPROM 
                      00351 ;
                      00352 ; NOTE          : THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
                      00353 ;
                      00354 ;===========================================================================
0060                  00355 EEREAD
0060   0064           00356                 CLRWDT
0061   0821           00357                 MOVFW   ADDRESS
0062   00B3           00358                 MOVWF   ADDRESS1
Message[305]: Using default destination of 1 (file).
0063   0DB3           00359                 RLF             ADDRESS1
0064   3002           00360                 MOVLW   02H
0065   00A5           00361                 MOVWF   CNT1            
0066                  00362 EEREAD3
0066   0833           00363                 MOVFW   ADDRESS1
0067   1683           00364                 BSF             STATUS,RP0
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0068   009B           00365                 MOVWF   EEADR
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0069   141C           00366                 BSF             EECON1,RD
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
006A   081A           00367                 MOVF    EEDATA,W
006B   1283           00368                 BCF             STATUS,RP0
006C   1CA5           00369                 BTFSS   CNT1,1
006D   2875           00370                 GOTO    EEREAD4
006E   00B1           00371                 MOVWF   TMP1
006F                  00372 EEREAD1
Message[305]: Using default destination of 1 (file).
006F   0BA5           00373                 DECFSZ  CNT1
0070   2873           00374                 GOTO    EEREAD2
0071   0064           00375                 CLRWDT
0072   3400           00376                 RETLW   0H
0073                  00377 EEREAD2
Message[305]: Using default destination of 1 (file).
0073   0AB3           00378                 INCF    ADDRESS1
0074   2866           00379                 GOTO    EEREAD3
0075                  00380 EEREAD4
0075   00B2           00381                 MOVWF   TMP2
0076   286F           00382                 GOTO    EEREAD1
                      00383 
                      00384 ;===========================================================================
                      00385 ;
                      00386 ; FUNCTION      : DECRYPT ()                            
                      00387 ;
                      00388 ; DESCRIPTION   : DECRYPTS 32 BIT [HOP1:HOP4] USING [CSR0:CSR7]
                      00389 ;
                      00390 ; NOTE          : THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
                      00391 ;
                      00392 ;===========================================================================
                      00393 
                      00394 
MPASM 03.60 Released                             P676_KOQ.ASM   3-4-2005  17:50:49         PAGE  9


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00395 ; THE KEY USED IS A FIXED KEY WHICH IS NOT SERIAL NUMBER DEPENDANT
                      00396 ; THE USER MUST CHOOSE A KEY AND CHANGE THE CODE HERE TO REFLECT THAT KEY
                      00397 
0077                  00398 DECRYPT
0077   30EF           00399         MOVLW   0EFH            ; LOAD FIXED 64 BIT KEY LSB             
0078   00B5           00400         MOVWF   KEY0
0079   30CD           00401         MOVLW   0CDH
007A   00B6           00402         MOVWF   KEY1
007B   30AB           00403         MOVLW   0ABH
007C   00B7           00404         MOVWF   KEY2
007D   3089           00405         MOVLW   089H
007E   00B8           00406         MOVWF   KEY3
007F   3067           00407         MOVLW   067H
0080   00A6           00408         MOVWF   KEY4
0081   3045           00409         MOVLW   045H
0082   00AE           00410         MOVWF   KEY5
0083   3023           00411         MOVLW   023H
0084   00AF           00412         MOVWF   KEY6
0085   3001           00413         MOVLW   01H             ; LOAD FIXED 64 BIT KEY MSB
0086   00B0           00414         MOVWF   KEY7
                      00415 
0087   300C           00416         MOVLW   11+1            ; OUTER LOOP 11+1 TIMES 
0088   00A5           00417         MOVWF   CNT1            ; OUTER LOOP 11+1 TIMES 
                      00418 
0089                  00419 DECRYPT_OUTER
                      00420 
0089   3030           00421         MOVLW   48              ; INNER LOOP 48 TIMES
008A   00A4           00422         MOVWF   CNT0            ; INNER LOOP 48 TIMES
                      00423 
008B                  00424 DECRYPT_INNER
008B   0064           00425                 CLRWDT                  ; RESET WATCHDOG TIMER
008C   0825           00426         MOVFW   CNT1            ; LAST 48 LOOPS RESTORE THE KEY
008D   3A01           00427         XORLW   1               ; LAST 48 LOOPS RESTORE THE KEY
008E   1903           00428         SKPNZ                   ; LAST 48 LOOPS RESTORE THE KEY
008F   28B5           00429         GOTO    ROTATE_KEY      ; LAST 48 LOOPS RESTORE THE KEY
                      00430 
                      00431         ; THE LOOKUP TABLE IS COMPRESSED INTO IN 4 BYTES TO SAVE SPACE
                      00432         ; USE THE 3 LOW INDEX BITS TO MAKE UP AN 8-BIT BIT MASK
                      00433         ; USE THE 2 HIGH INDEX BITS TO LOOK UP THE VALUE IN THE TABLE
                      00434         ; USE THE BIT MASK TO ISOLATE THE CORRECT BIT IN THE BYTE
                      00435         ; PART OF THE REASON FOR THIS SCHEME IS BECAUSE NORMAL TABLE LOOKUP
                      00436         ; REQUIRES AN ADDITIONAL STACK LEVEL
                      00437 
0090   1003           00438         CLRC                    ; CLEAR CARRY (FOR THE LEFT SHIFT)
                      00439        
0091   3001           00440         MOVLW   1               ; INITIALISE MASK = 1
0092   19AB           00441         BTFSC   HOP3,3          ; SHIFT MASK 4X IF BIT 2 SET
0093   3010           00442         MOVLW   10000B          ; SHIFT MASK 4X IF BIT 2 SET
0094   00A3           00443         MOVWF   MASK            ; INITIALISE MASK = 1
                      00444 
0095   1C2A           00445         BTFSS   HOP2,0          ; SHIFT MASK ANOTHER 2X IF BIT 1 SET
0096   2899           00446         GOTO    $+3
0097   0DA3           00447         RLF     MASK,F
MPASM 03.60 Released                             P676_KOQ.ASM   3-4-2005  17:50:49         PAGE 10


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0098   0DA3           00448         RLF     MASK,F            
                      00449 
0099   1829           00450         BTFSC   HOP1,0          ; SHIFT MASK ANOTHER 1X IF BIT 0 SET
009A   0DA3           00451         RLF     MASK,F
                      00452 
                      00453         ; MASK HAS NOW BEEN SHIFTED 0-7 TIMES ACCORDING TO BITS 2:1:0
                      00454 
009B   3000           00455         MOVLW   0               ; TABLE INDEX = 0
009C   18AC           00456         BTFSC   HOP4,1
009D   3802           00457         IORLW   2               ; IF BIT 3 SET ADD 2 TO THE TABLE INDEX
009E   1B2C           00458         BTFSC   HOP4,6
009F   3804           00459         IORLW   4               ; IF BIT 4 SET ADD 4 TO THE TABLE INDEX
                      00460 
00A0   0782           00461         ADDWF   PCL,F            ; ADD THE INDEX TO THE PROGRAM COUNTER
                      00462                                 ;  [ MUST BE IN LOWER HALF OF PAGE ]
                      00463                                
00A1                  00464 TABLE
00A1   302E           00465         MOVLW   02EH            ; BITS 4:3 WERE 00
00A2   28A8           00466         GOTO    TABLE_END       ; END OF LOOKUP
                      00467 
00A3   3074           00468         MOVLW   074H            ; BITS 4:3 WERE 01
00A4   28A8           00469         GOTO    TABLE_END       ; END OF LOOKUP
                      00470 
00A5   305C           00471         MOVLW   05CH            ; BITS 4:3 WERE 10
00A6   28A8           00472         GOTO    TABLE_END       ; END OF LOOKUP
                      00473 
00A7   303A           00474         MOVLW   03AH            ; BITS 4:3 WERE 11
                      00475                                  
00A8                  00476 TABLE_END
                      00477 
00A8   05A3           00478         ANDWF   MASK,F          ; ISOLATE THE CORRECT BIT BY ANDING WITH MASK
00A9   3000           00479         MOVLW   0               ; COPY THE BIT TO BIT 7
00AA   1D03           00480         SKPZ                    ; COPY THE BIT TO BIT 7
00AB   3080           00481         MOVLW   10000000B       ; COPY THE BIT TO BIT 7
                      00482 
00AC   062A           00483         XORWF   HOP2,W          ; ONLY INTERESTED IN BIT HOP2,7
00AD   062C           00484         XORWF   HOP4,W          ; ONLY INTERESTED IN BIT HOP4,7
00AE   0636           00485         XORWF   KEY1,W          ; ONLY INTERESTED IN BIT KEYREG1,7
                      00486 
00AF   00A3           00487         MOVWF   MASK            ; STORE W TEMPORARILY (WE NEED BIT 7)
00B0   0DA3           00488         RLF     MASK,F          ; LEFT ROTATE MASK TO GET BIT 7 INTO THE CARRY
                      00489 
00B1   0DA9           00490         RLF     HOP1,F          ; SHIFT IN THE NEW BIT
00B2   0DAA           00491         RLF     HOP2,F
00B3   0DAB           00492         RLF     HOP3,F
00B4   0DAC           00493         RLF     HOP4,F
                      00494 
00B5                  00495 ROTATE_KEY
                      00496 
00B5   1003           00497         CLRC                    ; CLEAR CARRY
00B6   1BB0           00498         BTFSC   KEY7,7          ; SET CARRY IF LEFTMOST BIT SET
00B7   1403           00499         SETC                    ; SET CARRY IF LEFTMOST BIT SET
                      00500 
MPASM 03.60 Released                             P676_KOQ.ASM   3-4-2005  17:50:49         PAGE 11


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

00B8   0DB5           00501         RLF     KEY0,F          ; LEFT-ROTATE THE 64-BIT KEY 
00B9   0DB6           00502         RLF     KEY1,F
00BA   0DB7           00503         RLF     KEY2,F
00BB   0DB8           00504         RLF     KEY3,F
00BC   0DA6           00505         RLF     KEY4,F
00BD   0DAE           00506         RLF     KEY5,F
00BE   0DAF           00507         RLF     KEY6,F
00BF   0DB0           00508         RLF     KEY7,F         
                      00509 
00C0   0BA4           00510         DECFSZ  CNT0,F          ; INNER LOOP 48 TIMES
00C1   288B           00511         GOTO    DECRYPT_INNER   ; INNER LOOP 48 TIMES
                      00512 
00C2   0BA5           00513         DECFSZ  CNT1,F          ; OUTER LOOP 12 TIMES (11 + 1 TO RESTORE KEY)
00C3   2889           00514         GOTO    DECRYPT_OUTER   ; OUTER LOOP 12 TIMES (11 + 1 TO RESTORE KEY)
                      00515 
00C4   3400           00516         RETLW   0               ; RETURN 
                      00517 
                      00518 ;===========================================================================
                      00519 ;
                      00520 ; FUNCTION      : LOAD_CNT_VALS()                               
                      00521 ;
                      00522 ; DESCRIPTION   : LOAD COUNTERS INTO WRITE BUFFERS

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -