📄 icmp.lis
字号:
0484 E0910000 lds R30,_ICMP_Header
0488 F0910100 lds R31,_ICMP_Header+1
048C 8083 std z+0,R24
048E .dbline 237
048E ; ICMP_Header->Code = 0; //
048E 2224 clr R2
0490 E0910000 lds R30,_ICMP_Header
0494 F0910100 lds R31,_ICMP_Header+1
0498 2182 std z+1,R2
049A .dbline 238
049A ; ICMP_Header->ID = htons(IP_ID++); // use the IP ID - for now
049A 20900000 lds R2,_IP_ID
049E 30900100 lds R3,_IP_ID+1
04A2 C101 movw R24,R2
04A4 0196 adiw R24,1
04A6 90930100 sts _IP_ID+1,R25
04AA 80930000 sts _IP_ID,R24
04AE 8101 movw R16,R2
04B0 0E940000 xcall _htons
04B4 E0910000 lds R30,_ICMP_Header
04B8 F0910100 lds R31,_ICMP_Header+1
04BC 1583 std z+5,R17
04BE 0483 std z+4,R16
04C0 .dbline 239
04C0 ; ICMP_Header->SeqNum = htons(RandNum); // sequence number
04C0 8601 movw R16,R12
04C2 0E940000 xcall _htons
04C6 E0910000 lds R30,_ICMP_Header
04CA F0910100 lds R31,_ICMP_Header+1
04CE 1783 std z+7,R17
04D0 0683 std z+6,R16
04D2 .dbline 240
04D2 ; MainBufferWr_Tx += sizeof(T_ICMP_Header); // update index
04D2 80910000 lds R24,_MainBufferWr_Tx
04D6 90910100 lds R25,_MainBufferWr_Tx+1
04DA 0896 adiw R24,8
04DC 90930100 sts _MainBufferWr_Tx+1,R25
04E0 80930000 sts _MainBufferWr_Tx,R24
04E4 .dbline 243
04E4 AA24 clr R10
04E6 BB24 clr R11
04E8 13C0 xjmp L60
04EA L57:
04EA .dbline 243
04EA 20900000 lds R2,_MainBufferWr_Tx
04EE 30900100 lds R3,_MainBufferWr_Tx+1
04F2 C101 movw R24,R2
04F4 0196 adiw R24,1
04F6 90930100 sts _MainBufferWr_Tx+1,R25
04FA 80930000 sts _MainBufferWr_Tx,R24
04FE 80E0 ldi R24,<_MainBuffer
0500 90E0 ldi R25,>_MainBuffer
0502 F101 movw R30,R2
0504 E80F add R30,R24
0506 F91F adc R31,R25
0508 A082 std z+0,R10
050A L58:
050A .dbline 243
050A C501 movw R24,R10
050C 0196 adiw R24,1
050E 5C01 movw R10,R24
0510 L60:
0510 .dbline 243
0510 ; //
0510 ; // add the ICMP data //
0510 ; for (w = 0; w < 47; w++) MainBuffer[MainBufferWr_Tx++] = (u8)w; // add some data - any data
0510 C501 movw R24,R10
0512 8F32 cpi R24,47
0514 E0E0 ldi R30,0
0516 9E07 cpc R25,R30
0518 40F3 brlo L57
051A .dbline 245
051A ; //
051A ; len = MainBufferWr_Tx - len; //
051A 20900000 lds R2,_MainBufferWr_Tx
051E 30900100 lds R3,_MainBufferWr_Tx+1
0522 2E18 sub R2,R14
0524 3F08 sbc R3,R15
0526 7101 movw R14,R2
0528 .dbline 247
0528 ; //
0528 ; w2 = MainBufferWr_Tx; //
0528 20900000 lds R2,_MainBufferWr_Tx
052C 30900100 lds R3,_MainBufferWr_Tx+1
0530 3B82 std y+3,R3
0532 2A82 std y+2,R2
0534 .dbline 249
0534 ; //
0534 ; w = IP_Checksum1((char*)ICMP_Header, len); // update the ICMP header checksum
0534 9701 movw R18,R14
0536 00910000 lds R16,_ICMP_Header
053A 10910100 lds R17,_ICMP_Header+1
053E 0E940000 xcall _IP_Checksum1
0542 5801 movw R10,R16
0544 .dbline 251
0544 ; // if (!w) w = 0xffff; //
0544 ; ICMP_Header->Checksum = htons(w); //
0544 0E940000 xcall _htons
0548 E0910000 lds R30,_ICMP_Header
054C F0910100 lds R31,_ICMP_Header+1
0550 1383 std z+3,R17
0552 0283 std z+2,R16
0554 .dbline 253
0554 ; //
0554 ; IP_Header->TotalLength += len; // update the IP header
0554 80910000 lds R24,_IP_Header
0558 90910100 lds R25,_IP_Header+1
055C 0296 adiw R24,2
055E FC01 movw R30,R24
0560 4080 ldd R4,z+0
0562 5180 ldd R5,z+1
0564 4E0C add R4,R14
0566 5F1C adc R5,R15
0568 5182 std z+1,R5
056A 4082 std z+0,R4
056C .dbline 255
056C ; //
056C ; IP_EndPacket(); //
056C 0E940000 xcall _IP_EndPacket
0570 .dbline 257
0570 ; //
0570 ; if (!PPP_SendPacket(false)) return false; // send it
0570 0027 clr R16
0572 0E940000 xcall _PPP_SendPacket
0576 0023 tst R16
0578 11F4 brne L61
057A .dbline 257
057A 0027 clr R16
057C 28C0 xjmp L46
057E L61:
057E .dbline 259
057E ; //
057E ; ICMP_Timer = 0; // reset the timer
057E 2224 clr R2
0580 3324 clr R3
0582 30920700 sts _ICMP_Timer+1,R3
0586 20920600 sts _ICMP_Timer,R2
058A .dbline 260
058A ; ICMP_SeqNum = RandNum; // remember the sequence number
058A D0920500 sts _ICMP_SeqNum+1,R13
058E C0920400 sts _ICMP_SeqNum,R12
0592 .dbline 261
0592 ; ICMP_IP.ip32 = IP; // and the ip
0592 FE01 movw R30,R28
0594 2684 ldd R2,z+14
0596 3784 ldd R3,z+15
0598 4088 ldd R4,z+16
059A 5188 ldd R5,z+17
059C 30920100 sts _ICMP_IP+1,R3
05A0 20920000 sts _ICMP_IP,R2
05A4 50920300 sts _ICMP_IP+2+1,R5
05A8 40920200 sts _ICMP_IP+2,R4
05AC .dbline 264
05AC ;
05AC ; #ifdef Debug
05AC ; IP_DisplayProtocol(true, (int)w2); //
05AC 2A81 ldd R18,y+2
05AE 3B81 ldd R19,y+3
05B0 01E0 ldi R16,1
05B2 0E940000 xcall _IP_DisplayProtocol
05B6 .dbline 265
05B6 ; IP_DisplayHeader(4, (int)w2); //
05B6 2A81 ldd R18,y+2
05B8 3B81 ldd R19,y+3
05BA 04E0 ldi R16,4
05BC 10E0 ldi R17,0
05BE 0E940000 xcall _IP_DisplayHeader
05C2 .dbline 266
05C2 ; ICMP_DisplayHeader(4 + sizeof(T_IP_Header), (int)w2); //
05C2 2A81 ldd R18,y+2
05C4 3B81 ldd R19,y+3
05C6 08E1 ldi R16,24
05C8 10E0 ldi R17,0
05CA 1ADD xcall _ICMP_DisplayHeader
05CC .dbline 269
05CC ; #endif
05CC ;
05CC ; return true;
05CC 01E0 ldi R16,1
05CE .dbline -2
05CE L46:
05CE 2496 adiw R28,4
05D0 0E940000 xcall pop_gset5
05D4 2496 adiw R28,4
05D6 .dbline 0 ; func end
05D6 0895 ret
05D8 .dbsym l w2 2 s
05D8 .dbsym r len 14 s
05D8 .dbsym r RandNum 12 s
05D8 .dbsym r w 10 s
05D8 .dbsym l IP 14 l
05D8 .dbend
05D8 .dbfunc e ICMP_10ms_Timer _ICMP_10ms_Timer fV
.even
05D8 _ICMP_10ms_Timer::
05D8 0E940000 xcall push_gset2
05DC .dbline -1
05DC .dbline 276
05DC ; }
05DC ;
05DC ; // **************************************************************************
05DC ; // this is called from the ip module - every 10ms
05DC ;
05DC ; void ICMP_10ms_Timer(void)
05DC ; {
05DC .dbline 277
05DC ; if (ICMP_Timer < 5000) //
05DC 80910600 lds R24,_ICMP_Timer
05E0 90910700 lds R25,_ICMP_Timer+1
05E4 8838 cpi R24,136
05E6 E3E1 ldi R30,19
05E8 9E07 cpc R25,R30
05EA 50F4 brsh L64
05EC .dbline 278
05EC ; ICMP_Timer += 10; // update the timer
05EC 80910600 lds R24,_ICMP_Timer
05F0 90910700 lds R25,_ICMP_Timer+1
05F4 0A96 adiw R24,10
05F6 90930700 sts _ICMP_Timer+1,R25
05FA 80930600 sts _ICMP_Timer,R24
05FE 12C0 xjmp L65
0600 L64:
0600 .dbline 280
0600 .dbline 281
0600 2224 clr R2
0602 3324 clr R3
0604 30920500 sts _ICMP_SeqNum+1,R3
0608 20920400 sts _ICMP_SeqNum,R2
060C .dbline 282
060C 40E0 ldi R20,0
060E 50E0 ldi R21,0
0610 60E0 ldi R22,0
0612 70E0 ldi R23,0
0614 50930100 sts _ICMP_IP+1,R21
0618 40930000 sts _ICMP_IP,R20
061C 70930300 sts _ICMP_IP+2+1,R23
0620 60930200 sts _ICMP_IP+2,R22
0624 .dbline 283
0624 L65:
0624 .dbline -2
0624 L63:
0624 0E940000 xcall pop_gset2
0628 .dbline 0 ; func end
0628 0895 ret
062A .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\AVR\AT-Modem__PPP__UDP__IC\icmp.c
0000 _ICMP_IP::
0000 .blkb 4
0004 .dbunion 0 4 TIPAddr
0004 .dbfield 0 ip8 A[4:4]c
0004 .dbfield 0 ip32 l
0004 .dbend
0004 .dbsym e ICMP_IP _ICMP_IP S[TIPAddr]
0004 _ICMP_SeqNum::
0004 .blkb 2
0006 .dbsym e ICMP_SeqNum _ICMP_SeqNum s
0006 _ICMP_Timer::
0006 .blkb 2
0008 .dbsym e ICMP_Timer _ICMP_Timer s
.area data(ram, con, rel)
0002 .dbfile C:\AVR\AT-Modem__PPP__UDP__IC\icmp.c
0002 L45:
0002 .blkb 15
.area idata
0002 202020706F6E673A2025756D730A00 .byte 32,32,32,'p,'o,'n,'g,58,32,37,'u,'m,'s,10,0
.area data(ram, con, rel)
0011 .dbfile C:\AVR\AT-Modem__PPP__UDP__IC\icmp.c
0011 L42:
0011 .blkb 2
.area idata
0011 0A00 .byte 10,0
.area data(ram, con, rel)
0013 .dbfile C:\AVR\AT-Modem__PPP__UDP__IC\icmp.c
0013 L26:
0013 .blkb 4
.area idata
0013 25750A00 .byte 37,'u,10,0
.area data(ram, con, rel)
0017 .dbfile C:\AVR\AT-Modem__PPP__UDP__IC\icmp.c
0017 L13:
0017 .blkb 5
.area idata
0017 2530345800 .byte 37,48,52,'X,0
.area data(ram, con, rel)
001C .dbfile C:\AVR\AT-Modem__PPP__UDP__IC\icmp.c
001C L4:
001C .blkb 3
.area idata
001C 257500 .byte 37,'u,0
.area data(ram, con, rel)
001F .dbfile C:\AVR\AT-Modem__PPP__UDP__IC\icmp.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -