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

📄 desmain.src

📁 C51下把DES汇编改为C语言的程序.改进版程序.
💻 SRC
📖 第 1 页 / 共 5 页
字号:
	MOVX 	@DPTR,A
	RET  	
L?0325:
	USING	0
L?0326:
	MOVX 	@DPTR,A
	MOV  	DPTR,#R4?051
	MOV  	A,#08H
	MOVX 	@DPTR,A
	RET  	
L?0327:
	USING	0
	MOV  	A,#LOW (BitMap?043)
	ADD  	A,R7
	MOV  	DPL,A
	MOV  	A,#HIGH (BitMap?043)
	ADDC 	A,R6
	MOV  	DPH,A
	MOVX 	A,@DPTR
	RET  	
L?0328:
	USING	0
	MOV  	A,#LOW (CalcArea?044)
	ADD  	A,R5
	MOV  	DPL,A
	MOV  	A,#HIGH (CalcArea?044)
	ADDC 	A,R4
	MOV  	DPH,A
	RET  	
L?0329:
	USING	0
L?0330:
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#A?054
	MOVX 	A,@DPTR
	RET  	
L?0331:
	USING	0
	MOVX 	A,@DPTR
	MOV  	DPTR,#A?054
	MOVX 	@DPTR,A
	MOV  	DPTR,#R1?048
	MOVX 	A,@DPTR
	RET  	
L?0332:
	USING	0
	MOV  	DPTR,#A?054
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#tmp?057
	MOVX 	@DPTR,A
	RET  	
L?0333:
	USING	0
	MOVX 	A,@DPTR
	MOV  	R5,A
	MOV  	DPTR,#A?054
	MOVX 	A,@DPTR
	MOV  	R4,A
	MOV  	A,R5
	XRL  	A,R4
	RET  	
; END OF Com010D

; BYTE DES(char mode, char data *text, char xdata *key)

	RSEG  ?PR?_DES?DESMAIN
_DES:
	USING	0
	MOV  	DPTR,#mode?040
	MOV  	A,R7
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R5
	MOVX 	@DPTR,A
;---- Variable 'key?042' assigned to Register 'R2/R3' ----
			; SOURCE LINE # 75
; {
			; SOURCE LINE # 76
;   BYTE BitMap[8];  
;   BYTE CalcArea[16];
;   BYTE *ptr0, *ptr2;
;   BYTE R0,R1,R2,R3,R4,R6,R7,A,B,C,tmp;
; //mode:B7&B6(00 ECB 01 CBC), B5(0 encrypt 1 decrypt),B4(0  crypt 1 MAC generation/verification)
; 
;   B=A^B;
			; SOURCE LINE # 83
	MOV  	DPTR,#B?055
	LCALL	L?0329
	MOV  	R6,A
	XRL  	A,R7
	INC  	DPTR
	MOVX 	@DPTR,A
;   A=A^B; 
			; SOURCE LINE # 84
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	A,R6
	XRL  	A,R7
	MOV  	R6,A
	MOV  	DPTR,#A?054
	MOVX 	@DPTR,A
;   B=A^B;
			; SOURCE LINE # 85
	MOV  	A,R7
	XRL  	A,R6
	INC  	DPTR
; 
; //DES_:
;   for(R3=8,ptr2=key; R3!=0; R3--,ptr2++)
			; SOURCE LINE # 88
	LCALL	L?0301
	MOV  	R7,AR3
	MOV  	R1,AR7
	MOV  	DPTR,#ptr2?046
	MOV  	A,#01H
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
?C0001:
	MOV  	DPTR,#R3?050
	MOVX 	A,@DPTR
	JZ   	?C0002
;   {
			; SOURCE LINE # 89
;     for(R4=7,ptr0=BitMap,A=*ptr2; R4!=0; R4--,ptr0++)
			; SOURCE LINE # 90
	INC  	DPTR
	MOV  	A,#07H
	MOVX 	@DPTR,A
	MOV  	DPTR,#ptr0?045
	MOV  	A,#01H
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#HIGH (BitMap?043)
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#LOW (BitMap?043)
	MOVX 	@DPTR,A
	INC  	DPTR
	LCALL	L?0306
	LCALL	?C?CLDPTR
	MOV  	DPTR,#A?054
	MOVX 	@DPTR,A
?C0004:
	MOV  	DPTR,#R4?051
	MOVX 	A,@DPTR
	JZ   	?C0003
;     {
			; SOURCE LINE # 91
; 	  (*ptr0)<<=1;
			; SOURCE LINE # 92
	LCALL	L?0305
	LCALL	?C?CLDPTR
	MOV  	R7,A
	ADD  	A,ACC
	LCALL	?C?CSTPTR
; 	  if(A&0x80)(*ptr0)++;
			; SOURCE LINE # 93
	MOV  	DPTR,#A?054
	MOVX 	A,@DPTR
	JNB  	ACC.7,?C0007
	LCALL	L?0305
	MOV  	A,#01H
	LCALL	?C?CILDPTR
?C0007:
;       A<<=1;
			; SOURCE LINE # 94
	MOV  	DPTR,#A?054
	MOVX 	A,@DPTR
	MOV  	R7,A
	ADD  	A,ACC
;     }
			; SOURCE LINE # 95
	LCALL	L?0284
	MOV  	DPTR,#ptr0?045+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?IILDX
	SJMP 	?C0004
;   }
			; SOURCE LINE # 96
?C0003:
	LCALL	L?0298
	MOV  	DPTR,#ptr2?046+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?IILDX
	LJMP 	?C0001
?C0002:
; #pragma asm
;   xch a,@R1  
	  xch a,@R1  
; #pragma endasm
;   A=BitMap[4];
			; SOURCE LINE # 100
	MOV  	DPTR,#BitMap?043+04H
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#A?054
	MOVX 	@DPTR,A
;   BitMap[4]=BitMap[6];
			; SOURCE LINE # 101
	MOV  	DPTR,#BitMap?043+06H
	MOVX 	A,@DPTR
	MOV  	DPTR,#BitMap?043+04H
	MOVX 	@DPTR,A
;   BitMap[6]=A;
			; SOURCE LINE # 102
	MOV  	DPTR,#BitMap?043+06H
	MOV  	A,R7
	MOVX 	@DPTR,A
; //  memcpy(BitMap,"\x0f\x33\x55\x00\x55\x33\x0f\x00",8);
;   R1=0;
			; SOURCE LINE # 104
	CLR  	A
	MOV  	DPTR,#R1?048
	MOVX 	@DPTR,A
;   for(R3=7;R3!=0;R3--)
			; SOURCE LINE # 105
	MOV  	DPTR,#R3?050
	MOV  	A,#07H
	MOVX 	@DPTR,A
?C0008:
;   {
			; SOURCE LINE # 106
; //SetKeyNxt:
;     A=BitMap[7-R3];
			; SOURCE LINE # 108
	MOV  	DPTR,#R3?050
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	R5,A
	CLR  	C
	MOV  	A,#07H
	LCALL	L?0289
	MOV  	DPTR,#A?054
	MOVX 	@DPTR,A
; 	for(R4=R3;R4!=0;R4--)
			; SOURCE LINE # 109
	MOV  	DPTR,#R4?051
	MOV  	A,R7
	MOVX 	@DPTR,A
?C0011:
	MOV  	DPTR,#R4?051
	MOVX 	A,@DPTR
	JZ   	?C0012
; 	{
			; SOURCE LINE # 110
; 	  tmp=CalcArea[R1];
			; SOURCE LINE # 111
	MOV  	DPTR,#R1?048
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	L?0274
; 	  CalcArea[R1]=(tmp>>2)+(tmp<<7);
			; SOURCE LINE # 112
	LCALL	L?0292
	LCALL	L?0275
;       if(A&0x01)
			; SOURCE LINE # 113
	LCALL	L?0316
	JNB  	ACC.0,?C0014
;         CalcArea[R1]+=0x40;
			; SOURCE LINE # 114
	MOV  	A,#LOW (CalcArea?044)
	ADD  	A,R7
	LCALL	L?0275
	MOVX 	A,@DPTR
	ADD  	A,#040H
	MOVX 	@DPTR,A
?C0014:
; 	  R1++;
			; SOURCE LINE # 115
;       A>>=1;
			; SOURCE LINE # 116
; 	}
			; SOURCE LINE # 117
	LCALL	L?0282
	SJMP 	?C0011
?C0012:
; 	R1=0;
			; SOURCE LINE # 118
	CLR  	A
	MOV  	DPTR,#R1?048
	MOVX 	@DPTR,A
;     for(R4=8-R3;R4!=0;R4--)
			; SOURCE LINE # 119
	MOV  	DPTR,#R3?050
	MOVX 	A,@DPTR
	MOV  	R7,A
	CLR  	C
	MOV  	A,#08H
	SUBB 	A,R7
	INC  	DPTR
	MOVX 	@DPTR,A
?C0015:
	MOV  	DPTR,#R4?051
	MOVX 	A,@DPTR
	JZ   	?C0010
; 	{
			; SOURCE LINE # 120
;   	  tmp=CalcArea[R1];
			; SOURCE LINE # 121
	MOV  	DPTR,#R1?048
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	L?0274
; 	  CalcArea[R1]=(tmp>>2)+(tmp<<7);
			; SOURCE LINE # 122
	LCALL	L?0292
	LCALL	L?0275
;       if(A&0x01)
			; SOURCE LINE # 123
	LCALL	L?0316
	JNB  	ACC.0,?C0018
;         CalcArea[R1]+=0x40;
			; SOURCE LINE # 124
	MOV  	A,#LOW (CalcArea?044)
	ADD  	A,R7
	LCALL	L?0275
	MOVX 	A,@DPTR
	ADD  	A,#040H
	MOVX 	@DPTR,A
?C0018:
; 	  R1++;
			; SOURCE LINE # 125
;       A>>=1;
			; SOURCE LINE # 126
;     }
			; SOURCE LINE # 127
	LCALL	L?0282
	SJMP 	?C0015
;   }
			; SOURCE LINE # 128
?C0010:
	LCALL	L?0298
	MOVX 	A,@DPTR
	JNZ  	?C0008
?C0009:
; //copy 0 or initial value to calculation area
;   if(VecExit)
			; SOURCE LINE # 130
	MOV  	DPTR,#VecExit
	MOVX 	A,@DPTR
	JZ   	?C0019
;     memcpy(CalcArea+8,InitValue, 8);
			; SOURCE LINE # 131
	MOV  	R0,#LOW (CalcArea?044+08H)
	MOV  	R4,#HIGH (CalcArea?044+08H)
	MOV  	R5,#01H
	MOV  	R3,#01H
	MOV  	R2,#HIGH (InitValue)
	MOV  	R1,#LOW (InitValue)
	LCALL	L?0303
?C0019:
; //Check DES mode
;   if(mode&0x80)return 3;//Error: wrong mode
			; SOURCE LINE # 133
	MOV  	DPTR,#mode?040
	MOVX 	A,@DPTR
	MOV  	R6,A
	JNB  	ACC.7,?C0020
	MOV  	R7,#03H
	RET  	
?C0020:
;   mode^=0x20;
			; SOURCE LINE # 134
	MOV  	A,R6
	XRL  	A,#020H
	MOV  	DPTR,#mode?040
	MOVX 	@DPTR,A
;   if((mode&0x30)==0)//Mask Decode and MAC-Bit;no len check when MAC or encryp
			; SOURCE LINE # 135
	ANL  	A,#030H
	JNZ  	?C0022
;   {
			; SOURCE LINE # 136
;     if(R7&0x07)return 8;//Length not multiple of 8
			; SOURCE LINE # 137
	MOV  	DPTR,#R7?053
	MOVX 	A,@DPTR
	ANL  	A,#07H
	JZ   	?C0022
	MOV  	R7,#08H
	RET  	
;   }
			; SOURCE LINE # 138
?C0022:
; //DesLgOK:
;   if(((mode^0x40)&0xf0)==0)
			; SOURCE LINE # 140
	MOV  	DPTR,#mode?040
	MOVX 	A,@DPTR
	XRL  	A,#040H
	MOV  	R7,A
	RLC  	A
	SUBB 	A,ACC
	MOV  	A,R7
	ANL  	A,#0F0H
	JNZ  	?_DES?DesAction
;   {
			; SOURCE LINE # 141
;     R6=R6+R7-8;
			; SOURCE LINE # 142
	MOV  	DPTR,#R7?053
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#R6?052
	MOVX 	A,@DPTR
	ADD  	A,R7
	ADD  	A,#0F8H
	MOVX 	@DPTR,A
;   };
			; SOURCE LINE # 143
; //DesSave: 
; //  tmpDPTR=DPTR;
; /***************Function DES ***************/
; DesAction:
			; SOURCE LINE # 147
?_DES?DesAction:
;   B=mode;
			; SOURCE LINE # 148
	MOV  	DPTR,#mode?040
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#B?055
	MOVX 	@DPTR,A
;   if(((mode&0x40)&&(mode&0x20))||(mode&0x10))
			; SOURCE LINE # 149
	JNB  	ACC.6,?C0028
	JB   	ACC.5,?C0027
?C0028:
	MOV  	A,R7
	JNB  	ACC.4,?C0026
?C0027:
;     B++;//CBC-Encode; BuildMac
			; SOURCE LINE # 150
	MOV  	DPTR,#B?055
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
?C0026:
;   R1=0;
			; SOURCE LINE # 151
	CLR  	A
	MOV  	DPTR,#R1?048
	MOVX 	@DPTR,A
;   R2=0x80;
			; SOURCE LINE # 152
	INC  	DPTR
	MOV  	A,#080H
	MOVX 	@DPTR,A
;   R3=8;
			; SOURCE LINE # 153
	INC  	DPTR
	MOV  	A,#08H
	MOVX 	@DPTR,A
; //InitPerm:
;   for(R7=8;R7!=0;R7--)
			; SOURCE LINE # 155
	MOV  	DPTR,#R7?053
	MOVX 	@DPTR,A
?C0029:
	MOV  	DPTR,#R7?053
	MOVX 	A,@DPTR
	MOV  	R7,A
	JNZ  	$ + 5H
	LJMP 	?C0030
;   {
			; SOURCE LINE # 156
;     A=R7;
			; SOURCE LINE # 157
	INC  	DPTR
	MOVX 	@DPTR,A
;     if(A!=0)
			; SOURCE LINE # 158
	JZ   	?C0032
;     {
			; SOURCE LINE # 159
;   	  A=text[8-R7];
			; SOURCE LINE # 160
	CLR  	C
	MOV  	A,#08H
	SUBB 	A,R7
	LCALL	L?0321
	MOV  	A,@R0
	MOV  	DPTR,#A?054
	MOVX 	@DPTR,A
; 	  R6++;
			; SOURCE LINE # 161
	MOV  	DPTR,#R6?052
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
;       if(B&0x01)
			; SOURCE LINE # 162
	MOV  	DPTR,#B?055
	MOVX 	A,@DPTR
	JNB  	ACC.0,?C0034
;         A^=CalcArea[8+R1];
			; SOURCE LINE # 163
	LCALL	L?0294
	LCALL	L?0323
;     }else{
			; SOURCE LINE # 164
	SJMP 	?C0034
?C0032:
; //Padding:
;       A=R2;
			; SOURCE LINE # 166
	MOV  	DPTR,#R2?049
	MOVX 	A,@DPTR
	MOV  	DPTR,#A?054
	MOVX 	@DPTR,A
;   	  if(B&0x40)
			; SOURCE LINE # 167
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	JNB  	ACC.6,?C0035
; 	  {
			; SOURCE LINE # 168
;         A^=CalcArea[8+R1];
			; SOURCE LINE # 169
	MOV  	DPTR,#A?054
	MOVX 	A,@DPTR
	MOV  	R6,A
	LCALL	L?0295
	MOV  	R5,A
	MOV  	A,R6
	XRL  	A,R5
	MOV  	DPTR,#A?054
	MOVX 	@DPTR,A
; 	  }else{
			; SOURCE LINE # 170
	SJMP 	?C0034
?C0035:
;         R6++;
			; SOURCE LINE # 171
	MOV  	DPTR,#R6?052
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
;         if(B&0x01)
			; SOURCE LINE # 172
	MOV  	A,R7
	JNB  	ACC.0,?C0034
; 		{
			; SOURCE LINE # 173
;           A^=CalcArea[8+R1];
			; SOURCE LINE # 174
	LCALL	L?0294
	LCALL	L?0323
; 		}else{
			; SOURCE LINE # 175
; 		}
			; SOURCE LINE # 176
; 	  }
			; SOURCE LINE # 177
; 	}
			; SOURCE LINE # 178
?C0034:
; //add previous output if necessary  
;     R4=8;
			; SOURCE LINE # 180
	MOV  	DPTR,#R4?051
	MOV  	A,#08H
; //permute byte into bitmap area
;     R3--;
			; SOURCE LINE # 182
	LCALL	L?0297
;     if(R3==0)break;
			; SOURCE LINE # 183
	MOVX 	A,@DPTR
	JZ   	?C0030
?C0039:
;     R1++;
			; SOURCE LINE # 184
	MOV  	DPTR,#R1?048
	MOVX 	A,@DPTR
	INC  	A
;     for(R4=8;R4!=0;R4--)
			; SOURCE LINE # 185
	LCALL	L?0325
?C0040:
	MOV  	DPTR,#R4?051
	MOVX 	A,@DPTR
	MOV  	R1,A
	JZ   	?C0031
;     {
			; SOURCE LINE # 186
;       BitMap[8-R4]<<=1;
			; SOURCE LINE # 187
	MOV  	R7,A
	CLR  	C
	MOV  	A,#08H
	SUBB 	A,R7
	MOV  	R7,A
	CLR  	A
	SUBB 	A,#00H
	MOV  	R6,A
	LCALL	L?0327
	MOV  	R5,A
	ADD  	A,ACC
	MOVX 	@DPTR,A
;   	  if(A&0x80)
			; SOURCE LINE # 188
	MOV  	DPTR,#A?054
	MOVX 	A,@DPTR
	MOV  	R5,A
	JNB  	ACC.7,?C0043
;         BitMap[8-R4]++;
			; SOURCE LINE # 189
	LCALL	L?0327
	INC  	A
	MOVX 	@DPTR,A
?C0043:
;       A<<=1;
			; SOURCE LINE # 190
	MOV  	A,R5
	ADD  	A,ACC
;     }
			; SOURCE LINE # 191
	LCALL	L?0283
	SJMP 	?C0040
;   }
			; SOURCE LINE # 192
?C0031:
	MOV  	DPTR,#R7?053
	MOVX 	A,@DPTR
	DEC  	A
	MOVX 	@DPTR,A
	LJMP 	?C0029
?C0030:
; //InitEnd:  ;permute last byte
;   tmp=A;
			; SOURCE LINE # 194
	MOV  	DPTR,#A?054
	MOVX 	A,@DPTR
	MOV  	DPTR,#tmp?057
	MOVX 	@DPTR,A
;   A=(tmp>>6)+(tmp<<2);
			; SOURCE LINE # 195
	LCALL	L?0311
	ANL  	A,#03H
	ADD  	A,R6
	MOV  	DPTR,#A?054
;   for(R4=8;R4!=0;R4--)
			; SOURCE LINE # 196
	LCALL	L?0325
?C0044:
	MOV  	DPTR,#R4?051
	MOVX 	A,@DPTR
	MOV  	R7,A
	JZ   	?C0045
;   {
			; SOURCE LINE # 197
;     if(A&0x80)
			; SOURCE LINE # 198
	MOV  	DPTR,#A?054
	MOVX 	A,@DPTR
	MOV  	R6,A
	JNB  	ACC.7,?C0047
; 	  BitMap[8-R4]|=0x80;
			; SOURCE LINE # 199
	LCALL	L?0288
	ORL  	A,#080H
	MOVX 	@DPTR,A
	SJMP 	?C0048
?C0047:
; 	else
; 	  BitMap[8-R4]&=~0x80;
			; SOURCE LINE # 201
	LCALL	L?0288
	ANL  	A,#07FH
	MOVX 	@DPTR,A
?C0048:
; 	 A<<=1;
			; SOURCE LINE # 202
	MOV  	A,R6
	ADD  	A,ACC
;   }
			; SOURCE LINE # 203
	LCALL	L?0283
	SJMP 	?C0044
?C0045:
; //load permuted input in calculation area
;   CalcArea[15]=BitMap[1];
			; SOURCE LINE # 205
	MOV  	DPTR,#BitMap?043+01H
	MOVX 	A,@DPTR
	MOV  	DPTR,#CalcArea?044+0FH
	MOVX 	@DPTR,A
;   CalcArea[14]=BitMap[3];
			; SOURCE LINE # 206
	MOV  	DPTR,#BitMap?043+03H
	MOVX 	A,@DPTR
	MOV  	DPTR,#CalcArea?044+0EH
	MOVX 	@DPTR,A
;   CalcArea[13]=BitMap[5];
			; SOURCE LINE # 207
	MOV  	DPTR,#BitMap?043+05H
	MOVX 	A,@DPTR
	MOV  	DPTR,#CalcArea?044+0DH
	MOVX 	@DPTR,A
;   CalcArea[12]=BitMap[7];
			; SOURCE LINE # 208
	MOV  	DPTR,#BitMap?043+07H
	MOVX 	A,@DPTR
	MOV  	DPTR,#CalcArea?044+0CH
	MOVX 	@DPTR,A
;   CalcArea[11]=BitMap[0];
			; SOURCE LINE # 209
	MOV  	DPTR,#BitMap?043
	MOVX 	A,@DPTR
	MOV  	DPTR,#CalcArea?044+0BH
	MOVX 	@DPTR,A

⌨️ 快捷键说明

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