📄 rtl8019as.lis
字号:
03F2 .dbline 270
03F2 ; buffer[9]=mac_sou[0];
03F2 2880 ldd R2,y+0
03F4 20920900 sts _buffer+9,R2
03F8 .dbline 272
03F8 ;
03F8 ; buffer[10]=mac_des[5];
03F8 2B84 ldd R2,y+11
03FA 20920A00 sts _buffer+10,R2
03FE .dbline 273
03FE ; buffer[11]=mac_des[4];
03FE 2A84 ldd R2,y+10
0400 20920B00 sts _buffer+11,R2
0404 .dbline 274
0404 ; buffer[12]=mac_des[3];
0404 2984 ldd R2,y+9
0406 20920C00 sts _buffer+12,R2
040A .dbline 275
040A ; buffer[13]=mac_des[2];
040A 2884 ldd R2,y+8
040C 20920D00 sts _buffer+13,R2
0410 .dbline 276
0410 ; buffer[14]=mac_des[1];
0410 2F80 ldd R2,y+7
0412 20920E00 sts _buffer+14,R2
0416 .dbline 277
0416 ; buffer[15]=mac_des[0];
0416 2E80 ldd R2,y+6
0418 20920F00 sts _buffer+15,R2
041C .dbline 279
041C ;
041C ; rtl8019_sendpack(packlen,4);
041C 24E0 ldi R18,4
041E 8A01 movw R16,R20
0420 07DF xcall _rtl8019_sendpack
0422 .dbline 280
0422 ; break;
0422 .dbline 282
0422 ; case 17://UDP包处理
0422 ; break;
0422 .dbline 283
0422 ; default:break;
0422 .dbline 285
0422 ; }
0422 ; break;
0422 .dbline 287
0422 ;
0422 ; default:break;
0422 .dbline 290
0422 ; }
0422 ;
0422 ; return;
0422 .dbline -2
0422 L35:
0422 2C96 adiw R28,12
0424 0E940000 xcall pop_gset3
0428 .dbline 0 ; func end
0428 0895 ret
042A .dbsym r i 10 i
042A .dbsym r packlen 20 i
042A .dbsym r packtyp 22 i
042A .dbsym l mac_des 6 A[6:6]c
042A .dbsym l mac_sou 0 A[6:6]c
042A .dbend
042A .dbfunc e tsum _tsum fi
042A ; tempp -> R10,R11
042A ; cksum -> y+0
042A ; size -> R18,R19
042A ; buffer -> R16,R17
.even
042A _tsum::
042A 0E940000 xcall push_gset3
042E 2497 sbiw R28,4
0430 .dbline -1
0430 .dbline 294
0430 ; }
0430 ;
0430 ; unsigned int tsum(unsigned int *buffer,unsigned int size) //校验和的求法
0430 ; {
0430 .dbline 295
0430 ; unsigned long cksum=0x0;
0430 40E0 ldi R20,0
0432 50E0 ldi R21,0
0434 60E0 ldi R22,0
0436 70E0 ldi R23,0
0438 FE01 movw R30,R28
043A 4083 std z+0,R20
043C 5183 std z+1,R21
043E 6283 std z+2,R22
0440 7383 std z+3,R23
0442 .dbline 298
0442 ; unsigned char *tempp;
0442 ;
0442 ; if(size&0x01)
0442 20FF sbrs R18,0
0444 1FC0 rjmp L108
0446 .dbline 299
0446 ; {
0446 .dbline 300
0446 ; tempp=(unsigned char *)buffer;
0446 5801 movw R10,R16
0448 .dbline 301
0448 ; tempp+=size;
0448 A20E add R10,R18
044A B31E adc R11,R19
044C .dbline 302
044C ; size++;
044C 2F5F subi R18,255 ; offset = 1
044E 3F4F sbci R19,255
0450 .dbline 303
0450 ; *tempp=0;
0450 2224 clr R2
0452 F501 movw R30,R10
0454 2082 std z+0,R2
0456 .dbline 304
0456 ; }
0456 16C0 xjmp L108
0458 L107:
0458 .dbline 307
0458 .dbline 308
0458 F801 movw R30,R16
045A 2190 ld R2,Z+
045C 3190 ld R3,Z+
045E 8F01 movw R16,R30
0460 4424 clr R4
0462 5524 clr R5
0464 FE01 movw R30,R28
0466 6080 ldd R6,z+0
0468 7180 ldd R7,z+1
046A 8280 ldd R8,z+2
046C 9380 ldd R9,z+3
046E 620C add R6,R2
0470 731C adc R7,R3
0472 841C adc R8,R4
0474 951C adc R9,R5
0476 FE01 movw R30,R28
0478 6082 std z+0,R6
047A 7182 std z+1,R7
047C 8282 std z+2,R8
047E 9382 std z+3,R9
0480 .dbline 309
0480 2250 subi R18,2
0482 3040 sbci R19,0
0484 .dbline 310
0484 L108:
0484 .dbline 306
0484 ;
0484 ; while(size>0) //各位求和
0484 2030 cpi R18,0
0486 2307 cpc R18,R19
0488 39F7 brne L107
048A X3:
048A .dbline 311
048A ; {
048A ; cksum=cksum+(*buffer++);
048A ; size-=2;
048A ; }
048A ; cksum=(unsigned int)cksum+(cksum>>16);
048A FE01 movw R30,R28
048C 2080 ldd R2,z+0
048E 3180 ldd R3,z+1
0490 4280 ldd R4,z+2
0492 5380 ldd R5,z+3
0494 1201 movw R2,R4
0496 4424 clr R4
0498 5524 clr R5
049A FE01 movw R30,R28
049C 6080 ldd R6,z+0
049E 7180 ldd R7,z+1
04A0 8824 clr R8
04A2 9924 clr R9
04A4 620C add R6,R2
04A6 731C adc R7,R3
04A8 841C adc R8,R4
04AA 951C adc R9,R5
04AC FE01 movw R30,R28
04AE 6082 std z+0,R6
04B0 7182 std z+1,R7
04B2 8282 std z+2,R8
04B4 9382 std z+3,R9
04B6 .dbline 313
04B6 ;
04B6 ; return(~cksum); //再取反
04B6 FE01 movw R30,R28
04B8 0081 ldd R16,z+0
04BA 1181 ldd R17,z+1
04BC 0095 com R16
04BE 1095 com R17
04C0 .dbline -2
04C0 L104:
04C0 2496 adiw R28,4
04C2 0E940000 xcall pop_gset3
04C6 .dbline 0 ; func end
04C6 0895 ret
04C8 .dbsym r tempp 10 pc
04C8 .dbsym l cksum 0 l
04C8 .dbsym r size 18 i
04C8 .dbsym r buffer 16 pi
04C8 .dbend
04C8 .dbfunc e send_ippack _send_ippack fV
04C8 ; protocol -> y+26
04C8 ; packtype -> R22,R23
04C8 ; len -> R20,R21
.even
04C8 _send_ippack::
04C8 0E940000 xcall push_gset2
04CC B901 movw R22,R18
04CE A801 movw R20,R16
04D0 6697 sbiw R28,22
04D2 .dbline -1
04D2 .dbline 317
04D2 ; }
04D2 ;
04D2 ; void send_ippack(unsigned int len,unsigned int packtype,unsigned char protocol)
04D2 ; {
04D2 .dbline 319
04D2 ;
04D2 ; buildpack(tempmac_d5,
04D2 7D8B std y+21,R23
04D4 6C8B std y+20,R22
04D6 85E4 ldi R24,69
04D8 8A8B std y+18,R24
04DA 83E4 ldi R24,67
04DC 888B std y+16,R24
04DE 89E4 ldi R24,73
04E0 8E87 std y+14,R24
04E2 86E4 ldi R24,70
04E4 8C87 std y+12,R24
04E6 8A87 std y+10,R24
04E8 8FE4 ldi R24,79
04EA 8887 std y+8,R24
04EC 20900000 lds R2,_tempmac_d0
04F0 2E82 std y+6,R2
04F2 20900100 lds R2,_tempmac_d1
04F6 2C82 std y+4,R2
04F8 20900200 lds R2,_tempmac_d2
04FC 2A82 std y+2,R2
04FE 20900300 lds R2,_tempmac_d3
0502 2882 std y+0,R2
0504 20910400 lds R18,_tempmac_d4
0508 00910500 lds R16,_tempmac_d5
050C B7DE xcall _buildpack
050E .dbline 332
050E ; tempmac_d4,
050E ; tempmac_d3,
050E ; tempmac_d2,
050E ; tempmac_d1,
050E ; tempmac_d0,
050E ; mynodeid_0,
050E ; mynodeid_1,
050E ; mynodeid_2,
050E ; mynodeid_3,
050E ; mynodeid_4,
050E ; mynodeid_5,
050E ; packtype);
050E ; ip_buildpack(&buffer[14],(len-14),ip_id,protocol,tempip_d3,tempip_d2,tempip_d1,tempip_d0);
050E 20900000 lds R2,_tempip_d0
0512 2A86 std y+10,R2
0514 20900000 lds R2,_tempip_d1
0518 2886 std y+8,R2
051A 20900000 lds R2,_tempip_d2
051E 2E82 std y+6,R2
0520 20900000 lds R2,_tempip_d3
0524 2C82 std y+4,R2
0526 0A8C ldd R0,y+26
0528 0A82 std y+2,R0
052A 20900000 lds R2,_ip_id
052E 30900100 lds R3,_ip_id+1
0532 3982 std y+1,R3
0534 2882 std y+0,R2
0536 9A01 movw R18,R20
0538 2E50 subi R18,14
053A 3040 sbci R19,0
053C 00E0 ldi R16,<_buffer+14
053E 10E0 ldi R17,>_buffer+14
0540 0E940000 xcall _ip_buildpack
0544 .dbline 333
0544 ; if(len<64){rtl8019_sendpack(64,0);}
0544 4034 cpi R20,64
0546 E0E0 ldi R30,0
0548 5E07 cpc R21,R30
054A 28F4 brsh L112
054C .dbline 333
054C .dbline 333
054C 2227 clr R18
054E 00E4 ldi R16,64
0550 10E0 ldi R17,0
0552 6EDE xcall _rtl8019_sendpack
0554 .dbline 333
0554 03C0 xjmp L113
0556 L112:
0556 .dbline 334
0556 2227 clr R18
0558 8A01 movw R16,R20
055A 6ADE xcall _rtl8019_sendpack
055C L113:
055C .dbline -2
055C L110:
055C 6696 adiw R28,22
055E 0E940000 xcall pop_gset2
0562 .dbline 0 ; func end
0562 0895 ret
0564 .dbsym l protocol 26 c
0564 .dbsym r packtype 22 i
0564 .dbsym r len 20 i
0564 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\hexok项目\AVRNET项目\AVRNET光盘\icc例子\rtl8019as.c
0000 _tempmac_d0::
0000 .blkb 1
0001 .dbsym e tempmac_d0 _tempmac_d0 c
0001 _tempmac_d1::
0001 .blkb 1
0002 .dbsym e tempmac_d1 _tempmac_d1 c
0002 _tempmac_d2::
0002 .blkb 1
0003 .dbsym e tempmac_d2 _tempmac_d2 c
0003 _tempmac_d3::
0003 .blkb 1
0004 .dbsym e tempmac_d3 _tempmac_d3 c
0004 _tempmac_d4::
0004 .blkb 1
0005 .dbsym e tempmac_d4 _tempmac_d4 c
0005 _tempmac_d5::
0005 .blkb 1
0006 .dbsym e tempmac_d5 _tempmac_d5 c
0006 _count::
0006 .blkb 2
0008 .dbsym e count _count i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -