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

📄 des_sam.lst

📁 DES的C语言算法,是一个完整C51工程,直接下载就可以应用了.
💻 LST
📖 第 1 页 / 共 4 页
字号:
A51 MACRO ASSEMBLER  DES_SAM                                                              01/31/2008 15:07:52 PAGE     1


MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN des_sam.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE des_sam.s SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     
                       2     ; /************************************************************************
                       3     
                       4     ;  * Project Name    : 
                       5     ;  * Module Name    : DES encrypt and descrypt routine
                       6     ;  *
                       7     ;  * History               Author        
                       8      ;    Version     Comment
                       9     ;  * 2000.09.16        P.Z.F            0.00    
                      10         ;original version
                      11     ;  
                      12     
                      13     ; C语言接口原形定义: 
                      14     ; void    DES(uchar idata * DATA_ADDR,uchar idata *KEY_ADDR,bit JA_JE_B)
                      15     
                      16     NAME    DES
                      17     
                      18     ?PR?_DES?DES        SEGMENT CODE INBLOCK
                      19     ?BI?_DES?DES        SEGMENT BIT OVERLAYABLE
                      20     ?DT?_DES?DES        SEGMENT DATA OVERLAYABLE
                      21     ?ID?_DES?DES        SEGMENT IDATA OVERLAYABLE
                      22     
                      23         PUBLIC    ?_DES?BIT
                      24         PUBLIC    _DES
                      25     
----                  26         RSEG  ?BI?_DES?DES
0000                  27     ?_DES?BIT:
0000                  28         JA_JE_B:   DBIT   1
0001                  29         ORG  1
0001                  30         D_TMP_B:   DBIT   1
                      31     
----                  32         RSEG  ?DT?_DES?DES
0000                  33        KEY_ADDR:    DS    1
0001                  34        DATA_ADDR:    DS    1
----                  35         RSEG  ?ID?_DES?DES
0000                  36        L_R_ADDR:    DS    8
0008                  37        C_D_ADDR:    DS    8
                      38     
  0000                39        Li_ADDR    EQU    L_R_ADDR
  0004                40        Ri_ADDR    EQU    (L_R_ADDR+4)
  0008                41        Ci_ADDR    EQU    C_D_ADDR
  000C                42        Di_ADDR    EQU    (C_D_ADDR+4)
                      43     
                      44     
----                  45         RSEG  ?PR?_DES?DES
                      46         USING    0
0000                  47     _DES:
0000 8F00     F       48         MOV      DATA_ADDR,R7
0002 8D00     F       49         MOV      KEY_ADDR,R5
                      50     
                      51     
0004 7E08             52             MOV R6,#8H
0006 A900     F       53                     MOV R1,DATA_ADDR       ;DATA ADDRESS
0008 7A00     F       54                     MOV R2,#L_R_ADDR        ;L0 AND R0 ADDRESS
000A 7B40             55                     MOV R3,#40H     ;BIT POSITION
000C                  56     LLOP1:
000C 7F08             57                     MOV R7,#8H
000E 7C00             58                     MOV R4,#0
A51 MACRO ASSEMBLER  DES_SAM                                                              01/31/2008 15:07:52 PAGE     2

0010 BE0402           59                     CJNE R6,#4H,LLOP2
0013 7B80             60                     MOV R3,#80H
0015 EC               61     LLOP2:          MOV A,R4
0016 23               62                     RL A
0017 FC               63                     MOV R4,A
0018 E9               64                     MOV A,R1
0019 2F               65                     ADD A,R7
001A 14               66                     DEC A           ;GET THE ADDRESS OF BYTE IN DATA
001B F8               67                     MOV R0,A
001C E6               68                     MOV A,@R0       ;GET THE VALUE OF BYTE IN DATA
001D 5B               69                     ANL A,R3
001E 6001             70                     JZ  TT1
0020 0C               71                     INC R4
0021 DFF2             72     TT1:            DJNZ R7,LLOP2   ;IF A BYTE IS OVER
0023 EB               73                     MOV A,R3        ;GET NEW BIT POSITION
0024 03               74                     RR  A           ;
0025 03               75                     RR  A           ;
0026 FB               76                     MOV R3,A        ;
0027 EE               77                     MOV A,R6        ;SAVE THE BYTE TO RAM
0028 14               78                     DEC A           ;
0029 F4               79                     CPL A
002A 5407             80                     ANL A,#07H      ;
002C 2A               81                     ADD A,R2        ;
002D F8               82                     MOV R0,A        ;
002E EC               83                     MOV A,R4        ;
002F F6               84                     MOV @R0,A       ;
0030 DEDA             85                     DJNZ R6,LLOP1   ;IF DATA IS OVER
                      86     ;KEY->C0 AND D0
0032 7E08             87                     MOV R6,#8
0034 A900     F       88                     MOV R1,KEY_ADDR
0036 7A00     F       89                     MOV R2,#C_D_ADDR
0038 900000   F       90                     MOV DPTR,#PC_1
003B 7B00             91                     MOV R3,#0H
003D 7F07             92     LLOP3:          MOV R7,#7H
003F 7C00             93                     MOV R4,#0H
0041 EC               94     LLOP30:         MOV A,R4
0042 23               95                     RL  A
0043 FC               96                     MOV R4,A
0044 EB               97                     MOV A,R3        ;GET VALUE OF PC_1 TABLE
0045 93               98                     MOVC A,@A+DPTR  ;
0046 0B               99                     INC R3
0047 75F008          100                     MOV B,#8
004A 84              101                     DIV AB
004B 29              102                     ADD A,R1
004C F8              103                     MOV R0,A        ;GET THE ADDRESS OF BYTE IN KEY
004D E6              104                     MOV A,@R0       ;GET THE VALUE OF BYTE IN KEY
004E FD              105                     MOV R5,A        ;SAVE
004F E5F0            106                     MOV A,B         ;GET THE BIT POSITION
0051 F4              107                     CPL A
0052 5407            108                     ANL A,#07H
0054 600B            109                     JZ  N_LLOP1
0056 F5F0            110                     MOV B,A
0058 7401            111                     MOV A,#1
005A 23              112     LP:             RL  A
005B D5F0FC          113                     DJNZ B,LP
005E 020000   F      114                     LJMP E_LLOP1
0061 7401            115     N_LLOP1:        MOV A,#1
0063 5D              116     E_LLOP1:        ANL A,R5
0064 6001            117                     JZ  TT2
0066 0C              118                     INC R4
0067 DFD8            119     TT2:            DJNZ R7,LLOP30  ;IF A BYTE IS OVER
0069 EE              120                     MOV A,R6        ;SAVE THE BYTE TO RAM
006A 14              121                     DEC A           ;
006B F4              122                     CPL A           ;
006C 5407            123                     ANL A,#07H      ;
006E 2A              124                     ADD A,R2        ;
A51 MACRO ASSEMBLER  DES_SAM                                                              01/31/2008 15:07:52 PAGE     3

006F F8              125                     MOV R0,A        ;
0070 EC              126                     MOV A,R4        ;
0071 F6              127                     MOV @R0,A       ;
0072 DEC9            128                     DJNZ R6,LLOP3   ;IF DATA IS OVER
                     129     
                     130     ;BEGIN LLOP
0074 7F10            131                     MOV R7,#10H
0076                 132     LLOP:
                     133     ;Ri->E
0076 7E08            134                     MOV R6,#8
0078 7900     F      135                     MOV R1,#Ri_ADDR
007A AA00     F      136                     MOV R2,DATA_ADDR
007C 7B1F            137                     MOV R3,#1FH
007E 7C00            138     LLOP_1:         MOV R4,#0
0080 7D06            139                     MOV R5,#6
0082 EC              140     LLOP10:         MOV A,R4
0083 23              141                     RL  A
0084 FC              142                     MOV R4,A
0085 EB              143                     MOV A,R3
0086 75F008          144                     MOV B,#8
0089 84              145                     DIV AB
008A 29              146                     ADD A,R1
008B F8              147                     MOV R0,A        ;GET THE ADDRESS OF BYTE IN Ri-1
008C E6              148                     MOV A,@R0       ;GET THE VALUE OF BYTE IN Ri-1
008D F8              149                     MOV R0,A
008E E5F0            150                     MOV A,B
0090 F4              151                     CPL A
0091 5407            152                     ANL A,#07H
0093 600B            153                     JZ  N_LLOP2
0095 F5F0            154                     MOV B,A
0097 7401            155                     MOV A,#1
0099 23              156     LP10:           RL  A
009A D5F0FC          157                     DJNZ B,LP10
009D 020000   F      158                     LJMP E_LLOP2
00A0 7401            159     N_LLOP2:        MOV A,#1
00A2 58              160     E_LLOP2:        ANL A,R0
00A3 6001            161                     JZ  TT10
00A5 0C              162                     INC R4
00A6 0B              163     TT10:           INC R3
00A7 BB2002          164                     CJNE R3,#20H,WW0
00AA 7B00            165                     MOV R3,#0
00AC DDD4            166     WW0:            DJNZ R5,LLOP10  ;IF A BYTE IS OVER
00AE EE              167                     MOV A,R6        ;SAVE THE BYTE TO RAM
00AF 14              168                     DEC A           ;
00B0 F4              169                     CPL A           ;
00B1 5407            170                     ANL A,#07H      ;
00B3 2A              171                     ADD A,R2        ;
00B4 F8              172                     MOV R0,A        ;
00B5 EC              173                     MOV A,R4        ;
00B6 F6              174                     MOV @R0,A       ;
00B7 1B              175                     DEC R3          ;ADJUST THE BIT POSITION
00B8 1B              176                     DEC R3          ;
00B9 DEC3            177                     DJNZ R6,LLOP_1  ;IF DATA IS OVER
                     178     ;C0 AND D0->Ki
00BB EF              179                     MOV A,R7        ;GET THE SHIF BIT NUMBER
00BC 14              180                     DEC A           ;
00BD F4              181                     CPL A           ;
00BE 540F            182                     ANL A,#0FH      ;
00C0 900000   F      183                     MOV DPTR,#SHIF ;
00C3 93              184                     MOVC A,@A+DPTR  ;
00C4 FB              185                     MOV R3,A        ;SAVE IN R3
00C5 A200     F      186                     MOV C,JA_JE_B
00C7 4050            187                     JC DES0

⌨️ 快捷键说明

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