?? dessamp.lst
字號:
00402 movlw 8
00403 addwf EEADR
00404
00405 call getkey
00406 call descore
00407
00408 movlw 256-16
00409 addwf EEADR
00410
00411 call ipinv
00412
00413 return
00414
00415
00416 tripleinv:
00417 movlw sboxbase>>8 ; set up to call s-boxes
00418 movwf PCLATH
00419
00420 call ip
00421
00422 movlw 16
00423 addwf EEADR
00424
00425 call getkey
00426 call desinvcore
00427
00428 movlw 256-8
00429 addwf EEADR
00430
00431 call getkey
00432 call descore
00433
00434 movlw 256-8
00435 addwf EEADR
00436
00437 call getkey
00438 call desinvcore
00439
00440 call ipinv
00441
00442 return
00443
00444 endif ; triple_des
00445
MPASM 01.50 Released DESSAMP.ASM 5-5-1997 16:06:32 PAGE 11
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00446
00447 if single_des
00448
00A3 00449 des:
00A3 3003 00450 movlw sboxbase>>8 ; set up to call s-boxes
00A4 008A 00451 movwf PCLATH
00452
00A5 211B 00453 call ip
00454
Error[113] : Symbol not previously defined (getkey)
00A6 2000 00455 call getkey
00A7 214B 00456 call descore
00457
00A8 2133 00458 call ipinv
00459
00A9 0008 00460 return
00461
00AA 00462 desinv:
00AA 3003 00463 movlw sboxbase>>8 ; set up to call s-boxes
00AB 008A 00464 movwf PCLATH
00465
00AC 211B 00466 call ip
00467
Error[113] : Symbol not previously defined (getkey)
00AD 2000 00468 call getkey
00AE 216C 00469 call desinvcore
00470
00AF 2133 00471 call ipinv
00472
00B0 0008 00473 return
00474
00475 endif ; single_des
00476
00477
00478 ;-----------------------------------------------------------------------------
00479 ; get key from EEPROM
00480 ; input: pointer to key in EEPROM in EEADR
00481 ; output: permuted key in keyl:keyr
00482 ;-----------------------------------------------------------------------------
00483
00B1 00484 getkeyee:
00B1 3014 00485 movlw keyl+0
00B2 0084 00486 movwf FSR
00487
00B3 20F4 00488 call eeread8
00489
00B4 0E17 00490 swapf keyl+3,W ; move low 4 bits of keyl+3
00B5 009B 00491 movwf keyr+3 ; into high 4 bits of keyr+3
00492
00B6 30F0 00493 movlw 0f0h ; mask off extra bits
00B7 0597 00494 andwf keyl+3
00B8 059B 00495 andwf keyr+3
00496
MPASM 01.50 Released DESSAMP.ASM 5-5-1997 16:06:32 PAGE 12
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00B9 0008 00497 return
00498
00499
00500 ;-----------------------------------------------------------------------------
00501 ; clear key
00502 ; input: pointer to key in EEPROM in EEADR
00503 ;
00504 ; if the index doesn't correspond to the first key of a valid set,
00505 ; return keyerr
00506 ;-----------------------------------------------------------------------------
00507
00BA 00508 clrkeyee:
00BA 301C 00509 movlw left+0
00BB 0084 00510 movwf FSR
00BC 3007 00511 movlw 7
00BD 008F 00512 movwf temp
00BE 00513 clrkee0:
00BE 0180 00514 clrf INDF
00BF 0A84 00515 incf FSR
00C0 0B8F 00516 decfsz temp
00C1 28BE 00517 goto clrkee0
00C2 28D8 00518 goto setkeyee9
00519
00520
00521 ;-----------------------------------------------------------------------------
00522 ; permute key and store to EEPROM
00523 ; input: key in keyl:keyr
00524 ; pointer to key in EEPROM in EEADR
00525 ;
00526 ; if the index doesn't correspond to an empty key, return keyerr
00527 ;-----------------------------------------------------------------------------
00528
00C3 00529 setkeyee:
00C3 3014 00530 movlw keyl
00C4 0084 00531 movwf FSR
00532
00C5 3008 00533 movlw 8
00C6 008F 00534 movwf temp
00535
00C7 00536 setkeyee0:
00C7 0D80 00537 rlf INDF
00C8 0C9C 00538 rrf left+0
00C9 0D80 00539 rlf INDF
00CA 0C9D 00540 rrf left+1
00CB 0D80 00541 rlf INDF
00CC 0C9E 00542 rrf left+2
00CD 0D80 00543 rlf INDF
00CE 0C9F 00544 rrf left+3
00CF 0D80 00545 rlf INDF
00D0 0CA2 00546 rrf left+6
00D1 0D80 00547 rlf INDF
00D2 0CA1 00548 rrf left+5
00D3 0D80 00549 rlf INDF
MPASM 01.50 Released DESSAMP.ASM 5-5-1997 16:06:32 PAGE 13
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00D4 0CA0 00550 rrf left+4
00551
00D5 0A84 00552 incf FSR
00D6 0B8F 00553 decfsz temp
00D7 28C7 00554 goto setkeyee0
00555
00D8 00556 setkeyee9:
00D8 301C 00557 movlw left+0
00D9 0084 00558 movwf FSR
00559
00560 ; goto eewrite8 ; fall into eewrite8
00561
00562
00563 ;-----------------------------------------------------------------------------
00564 ; eewrite - write a range of RAM into EEPROM
00565 ; input:
00566 ; start address of RAM in fsr
00567 ; start address of EEPROM in EEADR
00568 ; byte count in temp
00569 ;-----------------------------------------------------------------------------
00570
00DA 00571 eewrite8:
00DA 3008 00572 movlw 8
00DB 008F 00573 movwf temp
00574
00DC 00575 eewrite:
00DC 1683 00576 bsf STATUS,RP0 ; turn on write enable
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
00DD 0188 00577 clrf EECON1
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
00DE 1508 00578 bsf EECON1,WREN
00DF 1283 00579 bcf STATUS,RP0
00E0 00580 eew0:
00E0 0800 00581 movf INDF,W ; transfer the data
00E1 0088 00582 movwf EEDATA
00583
00E2 1683 00584 bsf STATUS,RP0 ; initiate EEPROM write
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
00E3 1208 00585 bcf EECON1,EEIF ; clear the write completion flag
00E4 3055 00586 movlw 055h
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
00E5 0089 00587 movwf EECON2
00E6 30AA 00588 movlw 0aah
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
00E7 0089 00589 movwf EECON2
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
00E8 1488 00590 bsf EECON1,WR
00591
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
00E9 1E08 00592 eew1: btfss EECON1,EEIF ; wait for write to complete
00EA 28E9 00593 goto eew1
00EB 1283 00594 bcf STATUS,RP0
00595
MPASM 01.50 Released DESSAMP.ASM 5-5-1997 16:06:32 PAGE 14
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00EC 0A84 00596 incf FSR ; advance pointers
00ED 0A89 00597 incf EEADR
00EE 0B8F 00598 decfsz temp
00EF 28E0 00599 goto eew0
00600
00F0 1683 00601 bsf STATUS,RP0 ; turn off write enable
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
00F1 0188 00602 clrf EECON1
00F2 1283 00603 bcf STATUS,RP0
00604
00F3 0008 00605 return
00606
00607
00608 ;-----------------------------------------------------------------------------
00609 ; eeread - read a range of EEPROM into RAM
00610 ; input:
00611 ; start address of RAM in fsr
00612 ; start address of EEPROM in EEADR
00613 ; byte count in temp
00614 ;-----------------------------------------------------------------------------
00615
00F4 00616 eeread8:
00F4 3008 00617 movlw 8
00F5 008F 00618 movwf temp
00619
00F6 00620 eeread:
00F6 00621 eer0:
00F6 1683 00622 bsf STATUS,RP0 ; initiate EEPROM read
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
00F7 1408 00623 bsf EECON1,RD
00F8 1283 00624 bcf STATUS,RP0
00625
00F9 0808 00626 movf EEDATA,W ; transfer the data
00FA 0080 00627 movwf INDF
00628
00FB 0A84 00629 incf FSR ; advance pointers
00FC 0A89 00630 incf EEADR
00FD 0B8F 00631 decfsz temp
00FE 28F6 00632 goto eer0
00633
00FF 0008 00634 return
00635
00636
00637 include "des.inc"
00001 ;-----------------------------------------------------------------------------
00002 ; DESPICable - DES (FIPS PUB 46, ANSI X3.92-1981) for the PIC16Cxx
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -