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

📄 des.asm

📁 8051微控制器上的 DES encryption/decryption used in IC smart cards. Software hasn t been validated and lack
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;*************************************************************************;|											          			          ;|  PROGARM	: DES.asm						            	          ;|														                  ;|  FUNCTIONS: ENCRYPTION/EDCRYPTION                                      ;|  COMPILER	: CROSS ASSEMBLER V1.2h            			              ;|														                  ;|  USED IN	: 	80C52 										              ;|														                  ;|  AUTHORS	:	KIWI CHEN										          ;|														                  ;|  WRITTEN AT :	30-11-99										      ;|														                  ;|  VERSION	:	V 1.0											          ;|														                  ;|  UPDATES	:												              ;|														                  ;| INPUT:         1.Acc  #0EH--------ENCRYPT                              ;|                       #ODH--------DECRYPT                              ;|                       OTHERS------RETURN                               ;|                2.DATA 08H~0FH                                          ;|                3.KEY  20H~27H                                          ;| OUTPUT:        00H~07H                               ;| SP:            40H;| Free RAM       48H~7FH;*************************************************************************                     KEYTEMP       EQU     080H  PSW           EQU     0D0H  RB3           EQU     018H TEMP          EQU     020H  ACC           EQU     0E0H B             EQU     0F0H XOR_TEMP      EQU     038H ENCODE        EQU     030H   KeyGen_TEMP   EQU     039H CODETEMP      EQU     03AH MOV_COUNT     EQU     03CH SOURCE        EQU     03DH DISTINATION   EQU     03EH  SP			   EQU     081H	 DPL           EQU     082H ;LOW BYTE OF DPTR DPH           EQU     083H ;HIGH BYTE OF DPTR               ORG     00H                MOV     SP,#40H  			   CJNE    A,#0DH,NEXT  ;INSTRUCT DECRYPT               AJMP    DECRYPTNEXT:          CJNE    A,#0EH,END2  ;INSTRUCT ENCRYPT               AJMP    ENCRYPT           END2:          LJMP    END1               ENCRYPT:;---GENERATE KEY DATA ---------------------------------------------------               ACALL   KEY_GENERATOR  ;---INITIAL ARRANGE-------------------------------------------------------               MOV     SOURCE,#08H               MOV     DISTINATION,#20H               ACALL   MOV_8_BYTES               ACALL   I_A                MOV     SOURCE,#00H               MOV     DISTINATION,#20H               ACALL   MOV_8_BYTES;------------------------------------------------------------------------               MOV     B,#080H                  MOV     CODETEMP,#16 COCO:         ACALL   F_FUNCTION               ACALL   XOR_4_BYTES               CALL    MOVE_MOVE               DJNZ    CODETEMP,COCO;--------FINAL ARRANGE------------------------                 ACALL   FINAL_ARRANGE               LJMP    END1;DECRYPTION------------------------------------------------------------DECRYPT:;---DECORD----------------------------------------------------------------;---GENERATE KEY DATA ---------------------------------------------------               ACALL   KEY_GENERATOR  ;---INITIAL ARRANGE-------------------------------------------------------               MOV     SOURCE,#08H               MOV     DISTINATION,#20H               ACALL   MOV_8_BYTES               ACALL   I_A               MOV     SOURCE,#00H               MOV     DISTINATION,#20H                  ACALL   MOV_8_BYTES;---------------------------------------------------------------------------               MOV     B,#0FFH               MOV     CODETEMP,#16  DEDE:         ACALL   F_FUNCTION_DECORD               ACALL   XOR_4_BYTES               ACALL   MOVE_MOVE               DJNZ    CODETEMP,DEDE ;--------FINAL ARRANGE------------------------                             ACALL   FINAL_ARRANGE                LJMP    END1;------END   MAIN PROGRAM------------------------------------------------ I_A:;---INITIAL ARRANGE       PUSH PSW       CLR  PSW.3       CLR  PSW.4             CLR  A      JNB   27H.1,IA1      SETB  ACC.0 IA1: JNB   26H.1,IA2      SETB  ACC.1 IA2: JNB   25H.1,IA3      SETB  ACC.2 IA3: JNB   24H.1,IA4      SETB  ACC.3 IA4: JNB   23H.1,IA5      SETB  ACC.4 IA5: JNB   22H.1,IA6      SETB  ACC.5  IA6: JNB   21H.1,IA7      SETB  ACC.6 IA7: JNB   20H.1,IA8      SETB  ACC.7 IA8: MOV   R0,A            ;----R1       CLR  A      JNB   27H.3,IA9      SETB  ACC.0 IA9: JNB   26H.3,IA10      SETB  ACC.1 IA10:JNB   25H.3,IA11      SETB  ACC.2 IA11:JNB   24H.3,IA12      SETB  ACC.3 IA12:JNB   23H.3,IA13      SETB  ACC.4 IA13:JNB   22H.3,IA14      SETB  ACC.5  IA14:JNB   21H.3,IA15      SETB  ACC.6 IA15:JNB   20H.3,IA16      SETB  ACC.7 IA16:MOV   R1,A      ;---R2       CLR  A      JNB   27H.5,IA17      SETB  ACC.0 IA17:JNB   26H.5,IA18      SETB  ACC.1 IA18:JNB   25H.5,IA19      SETB  ACC.2 IA19:JNB   24H.5,IA20      SETB  ACC.3 IA20:JNB   23H.5,IA21      SETB  ACC.4 IA21:JNB   22H.5,IA22      SETB  ACC.5  IA22:JNB   21H.5,IA23      SETB  ACC.6 IA23:JNB   20H.5,IA24      SETB  ACC.7 IA24:MOV   R2,A      ;---R3       CLR  A      JNB   27H.7,IA25      SETB  ACC.0 IA25:JNB   26H.7,IA26      SETB  ACC.1 IA26:JNB   25H.7,IA27      SETB  ACC.2 IA27:JNB   24H.7,IA28      SETB  ACC.3 IA28:JNB   23H.7,IA29      SETB  ACC.4 IA29:JNB   22H.7,IA30      SETB  ACC.5  IA30:JNB   21H.7,IA31      SETB  ACC.6 IA31:JNB   20H.7,IA32      SETB  ACC.7 IA32:MOV   R3,A      ;---R4       CLR  A      JNB   27H.0,IA33      SETB  ACC.0 IA33:JNB   26H.0,IA34      SETB  ACC.1 IA34:JNB   25H.0,IA35      SETB  ACC.2 IA35:JNB   24H.0,IA36      SETB  ACC.3 IA36:JNB   23H.0,IA37      SETB  ACC.4 IA37:JNB   22H.0,IA38      SETB  ACC.5  IA38:JNB   21H.0,IA39      SETB  ACC.6 IA39:JNB   20H.0,IA40      SETB  ACC.7 IA40:MOV   R4,A            ;---R5       CLR  A      JNB   27H.2,IA41      SETB  ACC.0 IA41:JNB   26H.2,IA42      SETB  ACC.1 IA42:JNB   25H.2,IA43      SETB  ACC.2 IA43:JNB   24H.2,IA44      SETB  ACC.3 IA44:JNB   23H.2,IA45      SETB  ACC.4 IA45:JNB   22H.2,IA46      SETB  ACC.5  IA46:JNB   21H.2,IA47      SETB  ACC.6 IA47: JNB   20H.2,IA48      SETB  ACC.7 IA48:MOV   R5,A      ;---R6       CLR  A      JNB   27H.4,IA49      SETB  ACC.0 IA49:JNB   26H.4,IA50      SETB  ACC.1 IA50:JNB   25H.4,IA51      SETB  ACC.2 IA51:JNB   24H.4,IA52      SETB  ACC.3 IA52:JNB   23H.4,IA53      SETB  ACC.4 IA53:JNB   22H.4,IA54      SETB  ACC.5  IA54:JNB   21H.4,IA55      SETB  ACC.6 IA55:JNB   20H.4,IA56      SETB  ACC.7 IA56:MOV   R6,A           ;---R7       CLR  A      JNB   27H.6,IA57      SETB  ACC.0 IA57:JNB   26H.6,IA58      SETB  ACC.1 IA58:JNB   25H.6,IA59      SETB  ACC.2 IA59:JNB   24H.6,IA60      SETB  ACC.3 IA60:JNB   23H.6,IA61      SETB  ACC.4 IA61:JNB   22H.6,IA62      SETB  ACC.5  IA62:JNB   21H.6,IA63      SETB  ACC.6 IA63:JNB   20H.6,IA64      SETB  ACC.7 IA64:MOV   R7,A                     IA8X:POP  PSW       RET;---END INITIAL ARRANGE----------------------------------------------------- MOVE_DB_TO_20H_27H:;----MOVE DATA FROM CODE TO 20H~27H  L0:  CLR  A       MOVC A,@A+DPTR       XCH  A,@R0       INC  DPTR       INC  R0       CJNE R0,#28H,L0       RET         MOV_8_BYTES:               PUSH        PSW              SETB        PSW.4              CLR         PSW.3	      MOV         MOV_COUNT,#8              MOV         R0,SOURCE              MOV         R1,DISTINATION COUNT:       MOV         A,@R0              XCH         A,@R1              INC         R1              INC         R0              DJNZ        MOV_COUNT,COUNT              POP         PSW              RET                ;---END INITIAL ARRANGE-----------------------------------------------------;---------------------------------------------------------------------------- F_FUNCTION:               ACALL   EXPAND_ARRANGE               ACALL   XOR_80H_18H               ACALL   S_BOXES                              ACALL   SHRINK_ARRANGE               RET;----------------------------------------------------------------------------;---------------------------------------------------------------------------- F_FUNCTION_DECORD:               ACALL   EXPAND_ARRANGE               ACALL   XOR_FFH_1FH               ACALL   S_BOXES               ACALL   SHRINK_ARRANGE               RET;****************************************************************************                EXPAND_ARRANGE:;---EXPAND_ARRANGE---------------------------------;Expand the 24H~27H(32bits) to RB3(**** **00)48bits            ;---R0------------------------------                       CLR  A            JNB   27H.7,E_A1            SETB ACC.2  E_A1:     JNB   24H.0,E_A2            SETB ACC.3  E_A2:     JNB   24H.1,E_A3            SETB ACC.4 E_A3:     JNB   24H.2,E_A4            SETB ACC.5  E_A4:     JNB   24H.3,E_A5            SETB ACC.6  E_A5:     JNB   24H.4,E_A6            SETB ACC.7 E_A6:     MOV  18H,A;---R1-------------------------           E_AX1:     CLR  A            JNB  24H.3,E_A7           SETB  ACC.2  E_A7:     JNB   24H.4,E_A8           SETB ACC.3 E_A8:     JNB   24H.5,E_A9           SETB ACC.4 E_A9:     JNB   24H.6,E_A10           SETB ACC.5 E_A10:    JNB   24H.7,E_A11           SETB ACC.6 E_A11:    JNB   25H.0,E_A12           SETB ACC.7  E_A12:    MOV  19H,A            ;---R2------------------------------------            E_AX2:     CLR  A           JNB   24H.7,E_A13            SETB ACC.2 E_A13:    JNB   25H.0,E_A14            SETB ACC.3 E_A14:    JNB   25H.1,E_A15            SETB ACC.4 E_A15:    JNB   25H.2,E_A16            SETB ACC.5 E_A16:    JNB   25H.3,E_A17            SETB ACC.6 E_A17:    JNB   25H.4,E_A18            SETB ACC.7 E_A18:    MOV  1AH,A           ;---R3------------------------------------            E_AX3:     CLR  A            JNB   25H.3,E_A19            SETB ACC.2 E_A19:    JNB   25H.4,E_A20            SETB ACC.3 E_A20:    JNB   25H.5,E_A21            SETB ACC.4 E_A21:    JNB   25H.6,E_A22            SETB ACC.5 E_A22:    JNB   25H.7,E_A23            SETB ACC.6 E_A23:    JNB   26H.0,E_A24            SETB ACC.7 E_A24:    MOV  1BH,A                                 ;---R4------------------------------------            E_AX4:     CLR  A            JNB   25H.7,E_A25            SETB ACC.2 E_A25:    JNB   26H.0,E_A26            SETB ACC.3 E_A26:    JNB   26H.1,E_A27            SETB ACC.4 E_A27:    JNB   26H.2,E_A28            SETB ACC.5 E_A28:    JNB   26H.3,E_A29            SETB ACC.6 E_A29:    JNB   26H.4,E_A30            SETB ACC.7 E_A30:    MOV  1CH,A                                ;---R5------------------------------------            E_AX5:     CLR  A            JNB   26H.3,E_A31            SETB ACC.2 E_A31:    JNB   26H.4,E_A32            SETB ACC.3 E_A32:    JNB   26H.5,E_A33            SETB ACC.4 E_A33:    JNB   26H.6,E_A34            SETB ACC.5 E_A34:    JNB   26H.7,E_A35            SETB ACC.6 E_A35:    JNB   27H.0,E_A36            SETB ACC.7  E_A36:    MOV  1DH,A                              ;---R6------------------------------------            E_AX6:     CLR  A            JNB   26H.7,E_A37            SETB ACC.2 E_A37:    JNB   27H.0,E_A38            SETB ACC.3 E_A38:    JNB   27H.1,E_A39            SETB ACC.4 E_A39:    JNB   27H.2,E_A40            SETB ACC.5 E_A40:    JNB   27H.3,E_A41            SETB ACC.6 E_A41:    JNB   27H.4,E_A42            SETB ACC.7 E_A42:    MOV  1EH,A                             ;---R7------------------------------------            E_AX7:     CLR  A            JNB   27H.3,E_A43            SETB ACC.2             E_A43:    JNB   27H.4,E_A44            SETB ACC.3 E_A44:    JNB   27H.5,E_A45            SETB ACC.4 E_A45:    JNB   27H.6,E_A46            SETB ACC.5 E_A46:    JNB   27H.7,E_A47            SETB ACC.6 E_A47:    JNB   24H.0,E_A48            SETB ACC.7  E_A48:    MOV  1FH,A                         RET;---END EXPAND_ARRANGE-------------------------------------------------------;**************************************************************************** XOR_80H_18H:        PUSH    PSW          CLR     PSW.3          SETB    PSW.4   ;-------------RB3          MOV     R0,B          MOV     R1,#RB3          MOV     XOR_TEMP,#020H XORR:    MOV     A,@R0          XRL     A,@R1          INC     R0          INC     R1          PUSH    011H  ;----PUSH R1                       MOV     R1,XOR_TEMP          MOV     @R1,A          INC     R1          MOV     XOR_TEMP,R1          POP     011H           CJNE    R1,#20H,XORR           MOV     B,R0       POP    PSW          RET;---END XOR 80H~88H TO RB3---------------------------------------------------;*********************************************************************************** XOR_FFH_1FH: ;---USE RB2 TO --------------------         

⌨️ 快捷键说明

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