📄 p676_koq.lst
字号:
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 + -