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

📄 dessamp.lst

📁 microchip网站上找的pic18F458单片机的示例代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
                    00246 
                    00247 ;-----------------------------------------------------------------------------
                    00248 ; initial permutation
                    00249 ;
                    00250 ; on entry:
                    00251 ;   data pointed to by FSR
                    00252 ; on exit:
                    00253 ;   permuted data in left:right
                    00254 ;   FSR unchanged
                    00255 ;   input data unchanged
                    00256 ;-----------------------------------------------------------------------------
                    00257 
011B 3008           00258 ip:     movlw   8
011C 008F           00259         movwf   temp
                    00260 
011D 0C80           00261 ip0:    rrf     INDF
011E 0C9F           00262         rrf     left+3
011F 0C80           00263         rrf     INDF
0120 0CA3           00264         rrf     left+7
0121 0C80           00265         rrf     INDF
0122 0C9E           00266         rrf     left+2
0123 0C80           00267         rrf     INDF
0124 0CA2           00268         rrf     left+6
0125 0C80           00269         rrf     INDF
0126 0C9D           00270         rrf     left+1
0127 0C80           00271         rrf     INDF
0128 0CA1           00272         rrf     left+5
0129 0C80           00273         rrf     INDF
012A 0C9C           00274         rrf     left+0
MPASM 01.50 Released          DESSAMP.ASM   5-5-1997  16:06:32         PAGE 20


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

012B 0C80           00275         rrf     INDF
012C 0CA0           00276         rrf     left+4
                    00277 
012D 0A84           00278         incf    FSR
012E 0B8F           00279         decfsz  temp
012F 291D           00280         goto    ip0
                    00281 
0130 30F8           00282         movlw   -8              ; restore FSR to original value
0131 3E04           00283         addlw   FSR
                    00284 
0132 0008           00285         return
                    00286 
                    00287 
                    00288 ;-----------------------------------------------------------------------------
                    00289 ; inverse initial permutation
                    00290 
                    00291 ; on entry:
                    00292 ;   data in left:right
                    00293 ;   pointer to storage for permuted data output pointed to by FSR
                    00294 ; on exit:
                    00295 ;   permuted data output in buffer pointed to by FSR
                    00296 ;   FSR unchanged
                    00297 ;   input data unchanged
                    00298 ;-----------------------------------------------------------------------------
                    00299 
0133                00300 ipinv:
0133 3008           00301         movlw   8
0134 008F           00302         movwf   temp
                    00303 
0135                00304 ipinv0:
0135 0C9F           00305         rrf     left+3
0136 0C80           00306         rrf     INDF
0137 0CA3           00307         rrf     left+7
0138 0C80           00308         rrf     INDF
0139 0C9E           00309         rrf     left+2
013A 0C80           00310         rrf     INDF
013B 0CA2           00311         rrf     left+6
013C 0C80           00312         rrf     INDF
013D 0C9D           00313         rrf     left+1
013E 0C80           00314         rrf     INDF
013F 0CA1           00315         rrf     left+5
0140 0C80           00316         rrf     INDF
0141 0C9C           00317         rrf     left+0
0142 0C80           00318         rrf     INDF
0143 0CA0           00319         rrf     left+4
0144 0C80           00320         rrf     INDF
                    00321 
0145 0A84           00322         incf    FSR
0146 0B8F           00323         decfsz  temp
0147 2935           00324         goto    ipinv0
                    00325 
0148 30F8           00326         movlw   -8              ; restore FSR to original value
0149 3E04           00327         addlw   FSR
MPASM 01.50 Released          DESSAMP.ASM   5-5-1997  16:06:32         PAGE 21


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                    00328 
014A 0008           00329         return
                    00330 
                    00331 
                    00332 ;-----------------------------------------------------------------------------
                    00333 ; core of DES
                    00334 ;-----------------------------------------------------------------------------
                    00335 
                    00336 ; The descore and desinvcore subroutines do complete DES encryptions and
                    00337 ; decryptions less the initial permutation and inverse initial permutation.
                    00338 ; The permutations are omitted here because in a triple-DES, it is a waste
                    00339 ; of time to apply them to the intermediate stages.
                    00340 
                    00341 
                    00342 ; On entry:
                    00343 ;   plaintext in left:right
                    00344 ;   permuted key in keyl:keyr
                    00345 ; On exit:
                    00346 ;   ciphertext in left:right
                    00347 
                    00348 ;                             call =    2 cycles
                    00349 ;   4 calls to roundl @ 320 cycles = 1280 cycles
                    00350 ; 12 calls to roundl2 @ 338 cycles = 4056 cycles
                    00351 ;                 fall into swaplr =   18 cycles
                    00352 ;                                    -----------
                    00353 ;                            total = 5356 cycles
                    00354 
014B                00355 descore:
014B 21A3           00356         call    roundl          ; round 1
014C 21A3           00357         call    roundl          ; round 2
014D 21A2           00358         call    roundl2         ; round 3
014E 21A2           00359         call    roundl2         ; round 4
014F 21A2           00360         call    roundl2         ; round 5
0150 21A2           00361         call    roundl2         ; round 6
0151 21A2           00362         call    roundl2         ; round 7
0152 21A2           00363         call    roundl2         ; round 8
0153 21A3           00364         call    roundl          ; round 9
0154 21A2           00365         call    roundl2         ; round 10
0155 21A2           00366         call    roundl2         ; round 11
0156 21A2           00367         call    roundl2         ; round 12
0157 21A2           00368         call    roundl2         ; round 13
0158 21A2           00369         call    roundl2         ; round 14
0159 21A2           00370         call    roundl2         ; round 15
015A 21A3           00371         call    roundl          ; round 16
                    00372 
                    00373 ; swaplr = 20 cycles including call
015B                00374 swaplr:
015B 081C           00375         movf    left+0,W
015C 00A0           00376         movwf   right+0
015D 081D           00377         movf    left+1,W
015E 00A1           00378         movwf   right+1
015F 081E           00379         movf    left+2,W
0160 00A2           00380         movwf   right+2
MPASM 01.50 Released          DESSAMP.ASM   5-5-1997  16:06:32         PAGE 22


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0161 081F           00381         movf    left+3,W
0162 00A3           00382         movwf   right+3
                    00383 
0163 0824           00384         movf    newr+0,W
0164 009C           00385         movwf   left+0
0165 0825           00386         movf    newr+1,W
0166 009D           00387         movwf   left+1
0167 0826           00388         movf    newr+2,W
0168 009E           00389         movwf   left+2
0169 0827           00390         movf    newr+3,W
016A 009F           00391         movwf   left+3
                    00392 
016B 0008           00393         return
                    00394 
                    00395 
                    00396 ; On entry:
                    00397 ;   ciphertext in left:right
                    00398 ;   permuted key in keyl:keyr
                    00399 ; On exit:
                    00400 ;   plaintext in left:right
                    00401 
                    00402 ;                             call =    2 cycles
                    00403 ;   4 calls to roundr @ 324 cycles = 1296 cycles
                    00404 ; 12 calls to roundr2 @ 344 cycles = 4128 cycles
                    00405 ;                      goto swaplr =   20 cycles
                    00406 ;                                    -----------
                    00407 ;                            total = 5446 cycles
                    00408 
016C                00409 desinvcore:
016C 21A0           00410         call    roundr          ; round 1
016D 219D           00411         call    roundr2         ; round 2
016E 219D           00412         call    roundr2         ; round 3
016F 219D           00413         call    roundr2         ; round 4
0170 219D           00414         call    roundr2         ; round 5
0171 219D           00415         call    roundr2         ; round 6
0172 219D           00416         call    roundr2         ; round 7
0173 21A0           00417         call    roundr          ; round 8
0174 219D           00418         call    roundr2         ; round 9
0175 219D           00419         call    roundr2         ; round 10
0176 219D           00420         call    roundr2         ; round 11
0177 219D           00421         call    roundr2         ; round 12
0178 219D           00422         call    roundr2         ; round 13
0179 219D           00423         call    roundr2         ; round 14
017A 21A0           00424         call    roundr          ; round 15
017B 21A0           00425         call    roundr          ; round 16
                    00426 
017C 295B           00427         goto    swaplr
                    00428 
                    00429 
                    00430 ;-----------------------------------------------------------------------------
                    00431 ; key rotation subroutines
                    00432 ;-----------------------------------------------------------------------------
                    00433 
MPASM 01.50 Released          DESSAMP.ASM   5-5-1997  16:06:32         PAGE 23


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                    00434 ; The 16 rounds of the DES each use a different 48-bit subkey, which is
                    00435 ; generated by INDFependently rotating the two 28-bit halves of the 56-bit key,
                    00436 ; then using Permuted Choice 2 to extract the 48 bit subkey.
                    00437 ;
                    00438 ; Since the PIC doesn't have enough RAM to store precomputed subkeys, the
                    00439 ; rotations are done on the fly using these subroutines.  The Permuted Choice
                    00440 ; 2 function is done as part of the xorkey macro calls.
                    00441 
                    00442 
                    00443 ; On entry and exit, the current subkey is in keyl:keyr.
                    00444 
                    00445 ; keyrotl takes 18 cycles including call
                    00446 
017D                00447 keyrotl:
017D 1003           00448         bcf     STATUS,C
017E 0D97           00449         rlf     keyl+3
017F 0D96           00450         rlf     keyl+2
0180 0D95           00451         rlf     keyl+1
0181 0D94           00452         rlf     keyl+0
0182 1803           00453         btfsc   STATUS,C
0183 1617           00454         bsf     k28
                    00455 
0184 1003           00456         bcf     STATUS,C
0185 0D9B           00457         rlf     keyr+3
0186 0D9A           00458         rlf     keyr+2
0187 0D99           00459         rlf     keyr+1
0188 0D98           00460         rlf     keyr+0
0189 1803           00461         btfsc   STATUS,C
018A 161B           00462         bsf     k56
                    00463 
018B 0008           00464         return
                    00465 
                    00466 
                    00467 ; keyrotr takes 20 cycles including call
                    00468 
018C                00469 keyrotr:
018C 1003           00470         bcf     STATUS,C
018D 0C94           00471         rrf     keyl+0
018E 0C95           00472         rrf     keyl+1
018F 0C96           00473         rrf     keyl+2
0190 0C97           00474         rrf     keyl+3
0191 1997           00475         btfsc   keyl+3,3
0192 1794           00476         bsf     k01
0193 1197           00477         bcf     keyl+3,3
                    00478 
0194 1003           00479         bcf     STATUS,C
0195 0C98           00480         rrf     keyr+0
0196 0C99           00481         rrf     keyr+1
0197 0C9A           00482         rrf     keyr+2
0198 0C9B           00483         rrf     keyr+3
0199 199B           00484         btfsc   keyr+3,3
019A 1798           00485         bsf     k29
019B 119B           00486         bcf     keyr+3,3
MPASM 01.50 Released          DESSAMP.ASM   5-5-1997  16:06:32         PAGE 24


LOC  OBJECT CODE     LI

⌨️ 快捷键说明

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