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

📄 dessamp.lst

📁 microchip网站上找的pic18F458单片机的示例代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
                    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 + -