📄 mifare1.src
字号:
; break;
; SOURCE LINE # 258
SJMP ?C0038
; }
; SOURCE LINE # 259
?C0040:
; if(cmd[2+(i<<3)] == cmd[2+(i1<<3)])
; SOURCE LINE # 260
MOV DPTR,#i1?247
MOVX A,@DPTR
MOV B,#08H
MUL AB
MOV DPL,A
MOV DPH,B
INC DPTR
INC DPTR
LCALL ?C?CLDOPTR
XRL A,R5
JNZ ?C0039
; {
; SOURCE LINE # 261
; fsame = 1;
; SOURCE LINE # 262
SETB fsame?248
; break;
; SOURCE LINE # 263
SJMP ?C0038
; }
; SOURCE LINE # 264
; }
; SOURCE LINE # 265
?C0039:
MOV DPTR,#i1?247
MOVX A,@DPTR
INC A
MOVX @DPTR,A
SJMP ?C0037
?C0038:
; if(fsame)
; SOURCE LINE # 266
JB fsame?248,?C0035
; break;
; SOURCE LINE # 267
; }
; SOURCE LINE # 268
?C0036:
MOV DPTR,#i?270+01H
MOVX A,@DPTR
INC A
MOVX @DPTR,A
JNZ ?C0188
MOV DPTR,#i?270
MOVX A,@DPTR
INC A
MOVX @DPTR,A
?C0188:
LJMP ?C0034
?C0035:
; if(i < len-1) // found same sector in buffer
; SOURCE LINE # 269
MOV DPTR,#len?246+01H
MOVX A,@DPTR
ADD A,#0FFH
MOV R7,A
MOV DPTR,#len?246
MOVX A,@DPTR
ADDC A,#0FFH
MOV R6,A
CLR C
MOV DPTR,#i?270+01H
MOVX A,@DPTR
SUBB A,R7
MOV DPTR,#i?270
MOVX A,@DPTR
SUBB A,R6
JNC ?C0043
; {
; SOURCE LINE # 270
; cmd[0] = ERRORCMD;
; SOURCE LINE # 271
; return 1;
; SOURCE LINE # 272
LJMP ?C0215
; }
; SOURCE LINE # 273
?C0043:
;
; // cmd --> m1sector
; cmd += 2;
; SOURCE LINE # 276
MOV DPTR,#cmd?245+01H
CLR A
MOV B,#02H
LCALL ?C?IILDX
;
; // copy to key buffer
; for(i=0; i<len; i++)
; SOURCE LINE # 279
CLR A
MOV DPTR,#i?270
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
?C0044:
MOV DPTR,#len?246
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
CLR C
MOV DPTR,#i?270+01H
MOVX A,@DPTR
SUBB A,R7
MOV DPTR,#i?270
MOVX A,@DPTR
SUBB A,R6
JC $ + 5H
LJMP ?C0045
; {
; SOURCE LINE # 280
; m1sector = cmd[0] & 0x7f;
; SOURCE LINE # 281
MOV DPTR,#cmd?245
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
LCALL ?C?CLDPTR
ANL A,#07FH
MOV DPTR,#m1sector?262
MOVX @DPTR,A
; m1block = cmd[1];
; SOURCE LINE # 282
MOV DPTR,#01H
LCALL ?C?CLDOPTR
MOV DPTR,#m1block?263
MOVX @DPTR,A
; m1data = cmd + 2;
; SOURCE LINE # 283
MOV A,R1
ADD A,#02H
MOV R1,A
CLR A
ADDC A,R2
MOV R2,A
MOV DPTR,#m1data?269
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
;
; // store key
; memcpy(m1keys[i], m1data, 6);
; SOURCE LINE # 286
INC DPTR
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
MOV R4,#00H
MOV R5,#06H
LCALL ?C?IMUL
MOV A,#LOW (m1keys)
ADD A,R7
MOV R1,A
MOV A,#HIGH (m1keys)
ADDC A,R6
XCH A,R0
MOV A,R1
XCH A,R0
MOV R4,A
MOV R5,#01H
MOV DPTR,#m1data?269
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV R6,#00H
MOV R7,#06H
LCALL ?C?COPY
; if(!m1block)
; SOURCE LINE # 287
MOV DPTR,#m1block?263
MOVX A,@DPTR
MOV DPTR,#m1sector?262
JNZ ?C0047
; m1keystatus[i] = m1sector & 0x7f;
; SOURCE LINE # 288
MOVX A,@DPTR
ANL A,#07FH
SJMP ?C0203
?C0047:
; else
; m1keystatus[i] = m1sector | 0x80;
; SOURCE LINE # 290
MOVX A,@DPTR
ORL A,#080H
?C0203:
MOV R7,A
MOV DPTR,#i?270
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
ADD A,#LOW (m1keystatus)
MOV DPL,A
MOV A,#HIGH (m1keystatus)
ADDC A,R4
MOV DPH,A
MOV A,R7
MOVX @DPTR,A
?C0048:
;
; cmd += 8;
; SOURCE LINE # 292
MOV DPTR,#cmd?245+01H
CLR A
MOV B,#08H
LCALL ?C?IILDX
; }
; SOURCE LINE # 293
MOV DPTR,#i?270+01H
MOVX A,@DPTR
INC A
MOVX @DPTR,A
JNZ ?C0189
MOV DPTR,#i?270
MOVX A,@DPTR
INC A
MOVX @DPTR,A
?C0189:
LJMP ?C0044
?C0045:
; m1keycnt = i;
; SOURCE LINE # 294
MOV DPTR,#i?270
INC DPTR
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#m1keycnt
MOVX @DPTR,A
;
; cmd[0] = SUCCESS;
; SOURCE LINE # 296
MOV DPTR,#cmd?245
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
CLR A
LCALL ?C?CSTPTR
; cmd[1] = m1keycnt;
; SOURCE LINE # 297
MOV DPTR,#cmd?245
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#01H
MOV A,R7
?C0206:
; return 2;
; SOURCE LINE # 298
LJMP ?C0246
; }
; SOURCE LINE # 299
?C0029:
;
; // 其他命令,首先作认证
; // search key for current sector
; m1keyidx = 0xff;
; SOURCE LINE # 303
MOV DPTR,#m1keyidx?267
MOV A,#0FFH
MOVX @DPTR,A
; fkeypassed = 0;
; SOURCE LINE # 304
CLR fkeypassed?268
; for(i=0; i<m1keycnt; i++)
; SOURCE LINE # 305
CLR A
MOV DPTR,#i?270
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
?C0049:
MOV DPTR,#m1keycnt
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#i?270
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
CLR C
SUBB A,R7
MOV A,#080H
MOV R0,A
MOV A,R4
XRL A,#080H
SUBB A,R0
JNC ?C0050
; {
; SOURCE LINE # 306
; if(m1sector == (m1keystatus[i] & 0x7f))
; SOURCE LINE # 307
MOV A,#LOW (m1keystatus)
ADD A,R5
MOV DPL,A
MOV A,#HIGH (m1keystatus)
ADDC A,R4
MOV DPH,A
MOVX A,@DPTR
ANL A,#07FH
MOV R7,A
MOV DPTR,#m1sector?262
MOVX A,@DPTR
XRL A,R7
JNZ ?C0051
; {
; SOURCE LINE # 308
; m1keyidx = i;
; SOURCE LINE # 309
MOV DPTR,#m1keyidx?267
MOV A,R5
MOVX @DPTR,A
; break;
; SOURCE LINE # 310
SJMP ?C0050
; }
; SOURCE LINE # 311
; }
; SOURCE LINE # 312
?C0051:
MOV DPTR,#i?270+01H
MOVX A,@DPTR
INC A
MOVX @DPTR,A
JNZ ?C0049
MOV DPTR,#i?270
MOVX A,@DPTR
INC A
MOVX @DPTR,A
?C0190:
SJMP ?C0049
?C0050:
; if(m1keyidx == 0xff)
; SOURCE LINE # 313
MOV DPTR,#m1keyidx?267
MOVX A,@DPTR
MOV R5,A
CJNE A,#0FFH,?C0053
; {
; SOURCE LINE # 314
; cmd[0] = FAIL;
; SOURCE LINE # 315
MOV DPTR,#cmd?245
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV A,#01H
LCALL ?C?CSTPTR
; cmd[1] = MI_NOTAUTHERR;
; SOURCE LINE # 316
MOV DPTR,#cmd?245
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#01H
MOV A,#08H
?C0216:
; return 2;
; SOURCE LINE # 317
LJMP ?C0246
; }
; SOURCE LINE # 318
?C0053:
; if((m1keystatus[m1keyidx] & 0x80) == 0x80) // key b
; SOURCE LINE # 319
MOV A,#LOW (m1keystatus)
ADD A,R5
MOV DPL,A
CLR A
ADDC A,#HIGH (m1keystatus)
MOV DPH,A
MOVX A,@DPTR
JB ACC.7,$ + 6H
LJMP ?C0054
; {
; SOURCE LINE # 320
; if(MI_OK == M500Auth(PICC_AUTHENT1B, snr, m1keys[m1keyidx], m1sector))
; SOURCE LINE # 321
MOV DPTR,#m1keyidx?267
MOVX A,@DPTR
MOV B,#06H
MUL AB
ADD A,#LOW (m1keys)
MOV R1,A
MOV A,#HIGH (m1keys)
ADDC A,B
MOV R2,A
MOV DPTR,#?_M500Auth?BYTE+04H
MOV A,#01H
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
MOV DPTR,#m1sector?262
MOVX A,@DPTR
MOV DPTR,#?_M500Auth?BYTE+07H
MOVX @DPTR,A
MOV R3,#01H
MOV R2,#HIGH (snr)
MOV R1,#LOW (snr)
MOV R7,#061H
LCALL _M500Auth
MOV A,R7
JNZ ?C0055
; fkeypassed = 1;
; SOURCE LINE # 322
SETB fkeypassed?268
LJMP ?C0060
?C0055:
; else if(MI_OK == M500Auth(PICC_AUTHENT1B, snr, m1keys[m1keyidx], m1sector))
; SOURCE LINE # 323
MOV DPTR,#m1keyidx?267
MOVX A,@DPTR
MOV B,#06H
MUL AB
ADD A,#LOW (m1keys)
MOV R1,A
MOV A,#HIGH (m1keys)
ADDC A,B
MOV R2,A
MOV DPTR,#?_M500Auth?BYTE+04H
MOV A,#01H
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
MOV DPTR,#m1sector?262
MOVX A,@DPTR
MOV DPTR,#?_M500Auth?BYTE+07H
MOVX @DPTR,A
MOV R3,#01H
MOV R2,#HIGH (snr)
MOV R1,#LOW (snr)
MOV R7,#061H
LCALL _M500Auth
MOV A,R7
JNZ ?C0057
; fkeypassed = 1;
; SOURCE LINE # 324
SETB fkeypassed?268
LJMP ?C0060
?C0057:
; else if(MI_OK == M500Auth(PICC_AUTHENT1B, snr, m1keys[m1keyidx], m1sector))
; SOURCE LINE # 325
MOV DPTR,#m1keyidx?267
MOVX A,@DPTR
MOV B,#06H
MUL AB
ADD A,#LOW (m1keys)
MOV R1,A
MOV A,#HIGH (m1keys)
ADDC A,B
MOV R2,A
MOV DPTR,#?_M500Auth?BYTE+04H
MOV A,#01H
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
MOV DPTR,#m1sector?262
MOVX A,@DPTR
MOV DPTR,#?_M500Auth?BYTE+07H
MOVX @DPTR,A
MOV R3,#01H
MOV R2,#HIGH (snr)
MOV R1,#LOW (snr)
MOV R7,#061H
LCALL _M500Auth
MOV A,R7
JZ $ + 5H
LJMP ?C0060
; fkeypassed = 1;
; SOURCE LINE # 326
SETB fkeypassed?268
; }
; SOURCE LINE # 327
LJMP ?C0060
?C0054:
; else // key a
; {
; SOURCE LINE # 329
; if(MI_OK == M500Auth(PICC_AUTHENT1A, snr, m1keys[m1keyidx], m1sector))
; SOURCE LINE # 330
MOV DPTR,#m1keyidx?267
MOVX A,@DPTR
MOV B,#06H
MUL AB
ADD A,#LOW (m1keys)
MOV R1,A
MOV A,#HIGH (m1keys)
ADDC A,B
MOV R2,A
MOV DPTR,#?_M500Auth?BYTE+04H
MOV A,#01H
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
MOV DPTR,#m1sector?262
MOVX A,@DPTR
MOV DPTR,#?_M500Auth?BYTE+07H
MOVX @DPTR,A
MOV R3,#01H
MOV R2,#HIGH (snr)
MOV R1,#LOW (snr)
MOV R7,#060H
LCALL _M500Auth
MOV A,R7
JNZ ?C0061
; fkeypassed = 1;
; SOURCE LINE # 331
SETB fkeypassed?268
SJMP ?C0060
?C0061:
; else if(MI_OK == M500Auth(PICC_AUTHENT1A, snr, m1keys[m1keyidx], m1sector))
; SOURCE LINE # 332
MOV DPTR,#m1keyidx?267
MOVX A,@DPTR
MOV B,#06H
MUL AB
ADD A,#LOW (m1keys)
MOV R1,A
MOV A,#HIGH (m1keys)
ADDC A,B
MOV R2,A
MOV DPTR,#?_M500Auth?BYTE+04H
MOV A,#01H
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
MOV DPTR,#m1sector?262
MOVX A,@DPTR
MOV DPTR,#?_M500Auth?BYTE+07H
MOVX @DPTR,A
MOV R3,#01H
MOV R2,#HIGH (snr)
MOV R1,#LOW (snr)
MOV R7,#060H
LCALL _M500Auth
MOV A,R7
JNZ ?C0063
; fkeypassed = 1;
; SOURCE LINE # 333
SETB fkeypassed?268
SJMP ?C0060
?C0063:
; else if(MI_OK == M500Auth(PICC_AUTHENT1A, snr, m1keys[m1keyidx], m1sector))
; SOURCE LINE # 334
MOV DPTR,#m1keyidx?267
MOVX A,@DPTR
MOV B,#06H
MUL AB
ADD A,#LOW (m1keys)
MOV R1,A
MOV A,#HIGH (m1keys)
ADDC A,B
MOV R2,A
MOV DPTR,#?_M500Auth?BYTE+04H
MOV A,#01H
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
MOV DPTR,#m1sector?262
MOVX A,@DPTR
MOV DPTR,#?_M500Auth?BYTE+07H
MOVX @DPTR,A
MOV R3,#01H
MOV R2,#HIGH (snr)
MOV R1,#LOW (snr)
MOV R7,#060H
LCALL _M500Auth
MOV A,R7
JNZ ?C0060
; fkeypassed = 1;
; SOURCE LINE # 335
SETB fkeypassed?268
; }
; SOURCE LINE # 336
?C0060:
; if(!fkeypassed)
; SOURCE LINE # 337
JB fkeypassed?268,?C0066
; {
; SOURCE LINE # 338
; cmd[0] = FAIL;
; SOURCE LINE # 339
MOV DPTR,#cmd?245
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV A,#01H
LCALL ?C?CSTPTR
; cmd[1] = MI_AUTHERR;
; SOURCE LINE # 340
MOV DPTR,#cmd?245
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -