📄 des.asm
字号:
;*************************************************************************;| ;| 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 + -