📄 mfrc50~1.lis
字号:
05DE 2082 std z+0,R2
05E0 .dbline 252
05E0 ; memcpy(MLastSelectedSnr,snr,4);
05E0 84E0 ldi R24,4
05E2 90E0 ldi R25,0
05E4 9983 std y+1,R25
05E6 8883 std y+0,R24
05E8 9B01 movw R18,R22
05EA 00E0 ldi R16,<_MLastSelectedSnr
05EC 10E0 ldi R17,>_MLastSelectedSnr
05EE 0E940000 xcall _memcpy
05F2 .dbline 253
05F2 ; }
05F2 L102:
05F2 .dbline 254
05F2 ; }
05F2 L99:
05F2 .dbline 255
05F2 ; }
05F2 L89:
05F2 .dbline 256
05F2 ; return status;
05F2 042F mov R16,R20
05F4 .dbline -2
05F4 L88:
05F4 2496 adiw R28,4
05F6 0E940000 xcall pop_gset3
05FA .dbline 0 ; func end
05FA 0895 ret
05FC .dbsym r status 20 I
05FC .dbsym l sak 10 pc
05FC .dbsym r snr 22 pc
05FC .dbsym r select_code 10 c
05FC .dbend
05FC .dbfunc e Mf500PcdSetDefaultAttrib _Mf500PcdSetDefaultAttrib fc
05FC ; status -> R16,R17
.even
05FC _Mf500PcdSetDefaultAttrib::
05FC .dbline -1
05FC .dbline 259
05FC ; }
05FC ; char Mf500PcdSetDefaultAttrib(void)
05FC ; {
05FC .dbline 260
05FC ; int status = MI_OK;
05FC 0027 clr R16
05FE 1127 clr R17
0600 .dbline 261
0600 ; return status;
0600 .dbline -2
0600 L104:
0600 .dbline 0 ; func end
0600 0895 ret
0602 .dbsym r status 16 I
0602 .dbend
0602 .dbfunc e Mf500PiccAuth _Mf500PiccAuth fc
0602 ; status -> R20,R21
0602 ; block -> y+9
0602 ; key_addr -> R10
0602 ; key_type -> R22
.even
0602 _Mf500PiccAuth::
0602 0E940000 xcall push_gset3
0606 A22E mov R10,R18
0608 602F mov R22,R16
060A 2397 sbiw R28,3
060C .dbline -1
060C .dbline 267
060C ; }
060C ; char Mf500PiccAuth(unsigned char key_type, // PICC_AUTHENT1A or PICC_AUTHENT1B
060C ; unsigned char key_addr, // key address in reader storage
060C ; unsigned char block) // block number which should be
060C ; // authenticated
060C ; {
060C .dbline 268
060C ; int status = MI_OK;
060C 4427 clr R20
060E 5527 clr R21
0610 .dbline 269
0610 ; status = Mf500PiccAuthE2( key_type,
0610 0984 ldd R0,y+9
0612 0A82 std y+2,R0
0614 A882 std y+0,R10
0616 20E0 ldi R18,<_MLastSelectedSnr
0618 30E0 ldi R19,>_MLastSelectedSnr
061A 062F mov R16,R22
061C 42D3 xcall _Mf500PiccAuthE2
061E 402F mov R20,R16
0620 5527 clr R21
0622 .dbline 273
0622 ; MLastSelectedSnr,
0622 ; key_addr,
0622 ; block);
0622 ; return status;
0622 .dbline -2
0622 L105:
0622 2396 adiw R28,3
0624 0E940000 xcall pop_gset3
0628 .dbline 0 ; func end
0628 0895 ret
062A .dbsym r status 20 I
062A .dbsym l block 9 c
062A .dbsym r key_addr 10 c
062A .dbsym r key_type 22 c
062A .dbend
062A .dbfunc e Mf500HostCodeKey _Mf500HostCodeKey fc
062A ; status -> R20,R21
062A ; hn -> R20
062A ; ln -> R22
062A ; cnt -> R10
062A ; coded -> R18,R19
062A ; uncoded -> R16,R17
.even
062A _Mf500HostCodeKey::
062A 0E940000 xcall push_gset3
062E .dbline -1
062E .dbline 277
062E ; }
062E ; char Mf500HostCodeKey( unsigned char *uncoded, // 6 bytes key value uncoded
062E ; unsigned char *coded) // 12 bytes key value coded
062E ; {
062E .dbline 278
062E ; int status = MI_OK;
062E 4427 clr R20
0630 5527 clr R21
0632 .dbline 279
0632 ; unsigned char cnt = 0;
0632 AA24 clr R10
0634 .dbline 280
0634 ; unsigned char ln = 0; // low nibble
0634 6627 clr R22
0636 .dbline 281
0636 ; unsigned char hn = 0; // high nibble
0636 .dbline 282
0636 ; for (cnt = 0; cnt < 6; cnt++)
0636 24C0 xjmp L110
0638 L107:
0638 .dbline 283
0638 .dbline 284
0638 EA2D mov R30,R10
063A FF27 clr R31
063C E00F add R30,R16
063E F11F adc R31,R17
0640 6081 ldd R22,z+0
0642 6F70 andi R22,15
0644 .dbline 285
0644 EA2D mov R30,R10
0646 FF27 clr R31
0648 E00F add R30,R16
064A F11F adc R31,R17
064C 4081 ldd R20,z+0
064E 4295 swap R20
0650 4F70 andi R20,#0x0F
0652 .dbline 286
0652 82E0 ldi R24,2
0654 8A9D mul R24,R10
0656 F001 movw R30,R0
0658 E20F add R30,R18
065A F31F adc R31,R19
065C 862F mov R24,R22
065E 8095 com R24
0660 8F70 andi R24,#0x0F
0662 8295 swap R24
0664 862B or R24,R22
0666 8183 std z+1,R24
0668 .dbline 287
0668 82E0 ldi R24,2
066A 8A9D mul R24,R10
066C F001 movw R30,R0
066E E20F add R30,R18
0670 F31F adc R31,R19
0672 842F mov R24,R20
0674 8095 com R24
0676 8F70 andi R24,#0x0F
0678 8295 swap R24
067A 842B or R24,R20
067C 8083 std z+0,R24
067E .dbline 288
067E L108:
067E .dbline 282
067E A394 inc R10
0680 L110:
0680 .dbline 282
0680 8A2D mov R24,R10
0682 8630 cpi R24,6
0684 C8F2 brlo L107
0686 .dbline 289
0686 ; {
0686 ; ln = uncoded[cnt] & 0x0F;
0686 ; hn = uncoded[cnt] >> 4;
0686 ; coded[cnt * 2 + 1] = (~ln << 4) | ln;
0686 ; coded[cnt * 2 ] = (~hn << 4) | hn;
0686 ; }
0686 ; return MI_OK;
0686 0027 clr R16
0688 .dbline -2
0688 L106:
0688 0E940000 xcall pop_gset3
068C .dbline 0 ; func end
068C 0895 ret
068E .dbsym r status 20 I
068E .dbsym r hn 20 c
068E .dbsym r ln 22 c
068E .dbsym r cnt 10 c
068E .dbsym r coded 18 pc
068E .dbsym r uncoded 16 pc
068E .dbend
068E .dbfunc e Mf500PiccAuthKey _Mf500PiccAuthKey fc
068E ; i -> R12
068E ; status -> R20,R21
068E ; block -> y+14
068E ; keys -> y+12
068E ; snr -> R10,R11
068E ; auth_mode -> R22
.even
068E _Mf500PiccAuthKey::
068E 0E940000 xcall push_gset4
0692 5901 movw R10,R18
0694 602F mov R22,R16
0696 2497 sbiw R28,4
0698 .dbline -1
0698 .dbline 295
0698 ; }
0698 ; char Mf500PiccAuthKey(unsigned char auth_mode,
0698 ; unsigned char *snr,
0698 ; unsigned char *keys,
0698 ; unsigned char block)
0698 ; {
0698 .dbline 296
0698 ; int status = MI_OK;
0698 4427 clr R20
069A 5527 clr R21
069C .dbline 297
069C ; unsigned char i = 0;
069C CC24 clr R12
069E .dbline 298
069E ; PcdSetTmo(106);
069E 0AE6 ldi R16,106
06A0 10E0 ldi R17,0
06A2 78D3 xcall _PcdSetTmo
06A4 .dbline 299
06A4 ; FlushFIFO(); // empty FIFO
06A4 D0D3 xcall _FlushFIFO
06A6 .dbline 300
06A6 ; ResetInfo(MInfo);
06A6 2224 clr R2
06A8 20920201 sts _MInfo,R2
06AC .dbline 300
06AC 3324 clr R3
06AE 30920401 sts _MInfo+1+1,R3
06B2 20920301 sts _MInfo+1,R2
06B6 .dbline 300
06B6 20920501 sts _MInfo+3,R2
06BA .dbline 300
06BA 20920601 sts _MInfo+4,R2
06BE .dbline 300
06BE 20920701 sts _MInfo+5,R2
06C2 .dbline 300
06C2 30920901 sts _MInfo+6+1,R3
06C6 20920801 sts _MInfo+6,R2
06CA .dbline 300
06CA 20920A01 sts _MInfo+8,R2
06CE .dbline 300
06CE 20920B01 sts _MInfo+9,R2
06D2 .dbline 300
06D2 .dbline 301
06D2 ; memcpy(MSndBuffer,keys,12); // write 12 bytes of the key
06D2 8CE0 ldi R24,12
06D4 90E0 ldi R25,0
06D6 9983 std y+1,R25
06D8 8883 std y+0,R24
06DA 2C85 ldd R18,y+12
06DC 3D85 ldd R19,y+13
06DE 00910E01 lds R16,_MSndBuffer
06E2 10910F01 lds R17,_MSndBuffer+1
06E6 0E940000 xcall _memcpy
06EA .dbline 302
06EA ; MInfo.nBytesToSend = 12;
06EA 8CE0 ldi R24,12
06EC 80930601 sts _MInfo+4,R24
06F0 .dbline 303
06F0 ; if ((status=PcdSingleResponseCmd(0x19,MSndBuffer,MRcvBuffer,&MInfo)) == MI_OK)
06F0 80E0 ldi R24,<_MInfo
06F2 90E0 ldi R25,>_MInfo
06F4 9B83 std y+3,R25
06F6 8A83 std y+2,R24
06F8 20900C01 lds R2,_MRcvBuffer
06FC 30900D01 lds R3,_MRcvBuffer+1
0700 3982 std y+1,R3
0702 2882 std y+0,R2
0704 20910E01 lds R18,_MSndBuffer
0708 30910F01 lds R19,_MSndBuffer+1
070C 09E1 ldi R16,25
070E B6D4 xcall _PcdSingleResponseCmd
0710 202E mov R2,R16
0712 3324 clr R3
0714 A101 movw R20,R2
0716 0023 tst R16
0718 39F4 brne L120
071A .dbline 304
071A ; {
071A .dbline 305
071A ; status = Mf500PiccAuthState(auth_mode,snr,block);
071A 0E84 ldd R0,y+14
071C 0882 std y+0,R0
071E 9501 movw R18,R10
0720 062F mov R16,R22
0722 07D0 xcall _Mf500PiccAuthState
0724 402F mov R20,R16
0726 5527 clr R21
0728 .dbline 306
0728 ; }
0728 L120:
0728 .dbline 307
0728 ; return status;
0728 042F mov R16,R20
072A .dbline -2
072A L111:
072A 2496
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -