📄 desmain.src
字号:
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 + -