⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ip.lis

📁 AVR单片机系统开发经典实例部分源程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 023A E0E0              ldi R30,0
 023C 5E07              cpc R21,R30
 023E 31F0              breq L48
 0240 1AC0              xjmp L45
 0242           L58:
 0242 4131              cpi R20,17
 0244 E0E0              ldi R30,0
 0246 5E07              cpc R21,R30
 0248 41F0              breq L51
 024A 15C0              xjmp L45
 024C           X1:
 024C                   .dbline 175
 024C           ;       {
 024C           L48:
 024C                   .dbline 176
 024C           ;               case IP_PROTO_ICMP      :       if (!SendDebugRStr(ip_str10)) return;
 024C 00E0              ldi R16,<_ip_str10
 024E 10E0              ldi R17,>_ip_str10
 0250 0E940000          xcall _SendDebugRStr
 0254 0023              tst R16
 0256 79F4              brne L46
 0258                   .dbline 176
 0258 FAC0              xjmp L13
 025A           X2:
 025A                   .dbline 177
 025A           ;                                                               break;
 025A           L51:
 025A                   .dbline 178
 025A           ;               case IP_PROTO_UDP       :       if (!SendDebugRStr(ip_str11)) return;
 025A 00E0              ldi R16,<_ip_str11
 025C 10E0              ldi R17,>_ip_str11
 025E 0E940000          xcall _SendDebugRStr
 0262 0023              tst R16
 0264 41F4              brne L46
 0266                   .dbline 178
 0266 F3C0              xjmp L13
 0268           X3:
 0268                   .dbline 179
 0268           ;                                                               break;
 0268           L54:
 0268                   .dbline 180
 0268           ;               case IP_PROTO_TCP       :       if (!SendDebugRStr(ip_str12)) return;
 0268 00E0              ldi R16,<_ip_str12
 026A 10E0              ldi R17,>_ip_str12
 026C 0E940000          xcall _SendDebugRStr
 0270 0023              tst R16
 0272 09F4              brne L46
 0274                   .dbline 180
 0274 ECC0              xjmp L13
 0276           X4:
 0276                   .dbline 181
 0276           ;                                                               break;
 0276           L45:
 0276           L46:
 0276                   .dbline 183
 0276           ;       }
 0276           ;       sprintf((char*)ScratchPad, " [%04X]", IP_Header->Protocol);
 0276 E0910000          lds R30,_IP_Header
 027A F0910100          lds R31,_IP_Header+1
 027E 2184              ldd R2,z+9
 0280 3324              clr R3
 0282 3982              std y+1,R3
 0284 2882              std y+0,R2
 0286 20E0              ldi R18,<L59
 0288 30E0              ldi R19,>L59
 028A 00E0              ldi R16,<_ScratchPad
 028C 10E0              ldi R17,>_ScratchPad
 028E 0E940000          xcall _sprintf
 0292                   .dbline 184
 0292           ;       if (!SendDebugStr((char*)ScratchPad)) return;
 0292 00E0              ldi R16,<_ScratchPad
 0294 10E0              ldi R17,>_ScratchPad
 0296 0E940000          xcall _SendDebugStr
 029A 0023              tst R16
 029C 09F4              brne L60
 029E                   .dbline 184
 029E D7C0              xjmp L13
 02A0           L60:
 02A0                   .dbline 186
 02A0           ; 
 02A0           ;       if (!SendDebugRStr(ip_str13)) return;
 02A0 00E0              ldi R16,<_ip_str13
 02A2 10E0              ldi R17,>_ip_str13
 02A4 0E940000          xcall _SendDebugRStr
 02A8 0023              tst R16
 02AA 09F4              brne L62
 02AC                   .dbline 186
 02AC D0C0              xjmp L13
 02AE           L62:
 02AE                   .dbline 187
 02AE           ;       sprintf((char*)ScratchPad, "%04X ", ntohs(IP_Header->Checksum));
 02AE E0910000          lds R30,_IP_Header
 02B2 F0910100          lds R31,_IP_Header+1
 02B6 0285              ldd R16,z+10
 02B8 1385              ldd R17,z+11
 02BA 0E940000          xcall _ntohs
 02BE 1983              std y+1,R17
 02C0 0883              std y+0,R16
 02C2 20E0              ldi R18,<L64
 02C4 30E0              ldi R19,>L64
 02C6 00E0              ldi R16,<_ScratchPad
 02C8 10E0              ldi R17,>_ScratchPad
 02CA 0E940000          xcall _sprintf
 02CE                   .dbline 188
 02CE           ;       if (!SendDebugStr((char*)ScratchPad)) return;
 02CE 00E0              ldi R16,<_ScratchPad
 02D0 10E0              ldi R17,>_ScratchPad
 02D2 0E940000          xcall _SendDebugStr
 02D6 0023              tst R16
 02D8 09F4              brne L65
 02DA                   .dbline 188
 02DA B9C0              xjmp L13
 02DC           L65:
 02DC                   .dbline 190
 02DC           ; 
 02DC           ;       IP_Str((char*)ScratchPad, IP_Header->SourceIP.ip32);
 02DC E0910000          lds R30,_IP_Header
 02E0 F0910100          lds R31,_IP_Header+1
 02E4 2484              ldd R2,z+12
 02E6 3584              ldd R3,z+13
 02E8 4684              ldd R4,z+14
 02EA 5784              ldd R5,z+15
 02EC 4882              std y+0,R4
 02EE 5982              std y+1,R5
 02F0 9101              movw R18,R2
 02F2 00E0              ldi R16,<_ScratchPad
 02F4 10E0              ldi R17,>_ScratchPad
 02F6 0E940000          xcall _IP_Str
 02FA                   .dbline 191
 02FA           ;       strcat((char*)ScratchPad, " > ");
 02FA 20E0              ldi R18,<L67
 02FC 30E0              ldi R19,>L67
 02FE 00E0              ldi R16,<_ScratchPad
 0300 10E0              ldi R17,>_ScratchPad
 0302 0E940000          xcall _strcat
 0306                   .dbline 192
 0306           ;       IP_Str((char*)ScratchPad + strlen((char*)ScratchPad), IP_Header->DestIP.ip32);
 0306 00E0              ldi R16,<_ScratchPad
 0308 10E0              ldi R17,>_ScratchPad
 030A 0E940000          xcall _strlen
 030E E0910000          lds R30,_IP_Header
 0312 F0910100          lds R31,_IP_Header+1
 0316 2088              ldd R2,z+16
 0318 3188              ldd R3,z+17
 031A 4288              ldd R4,z+18
 031C 5388              ldd R5,z+19
 031E 4882              std y+0,R4
 0320 5982              std y+1,R5
 0322 9101              movw R18,R2
 0324 80E0              ldi R24,<_ScratchPad
 0326 90E0              ldi R25,>_ScratchPad
 0328 080F              add R16,R24
 032A 191F              adc R17,R25
 032C 0E940000          xcall _IP_Str
 0330                   .dbline 193
 0330           ;       if (!SendDebugStr((char*)ScratchPad)) return;
 0330 00E0              ldi R16,<_ScratchPad
 0332 10E0              ldi R17,>_ScratchPad
 0334 0E940000          xcall _SendDebugStr
 0338 0023              tst R16
 033A 09F4              brne L68
 033C                   .dbline 193
 033C 88C0              xjmp L13
 033E           L68:
 033E                   .dbline 195
 033E           ; 
 033E           ;       if (!SendDebugStr("\n")) return;
 033E 00E0              ldi R16,<L72
 0340 10E0              ldi R17,>L72
 0342 0E940000          xcall _SendDebugStr
 0346 0023              tst R16
 0348 09F4              brne L70
 034A                   .dbline 195
 034A 81C0              xjmp L13
 034C           L70:
 034C                   .dbline 199
 034C           ; 
 034C           ;       // display any header options
 034C           ; 
 034C           ;       i = HeaderIdx;                                                                                                  // index of header
 034C A501              movw R20,R10
 034E                   .dbline 200
 034E           ;       j = (int)(IP_Header->VerLen & 0x0f);                                                    // j = length of header in 32-bit dwords
 034E E0910000          lds R30,_IP_Header
 0352 F0910100          lds R31,_IP_Header+1
 0356 8081              ldd R24,z+0
 0358 9927              clr R25
 035A 8F70              andi R24,15
 035C 9070              andi R25,0
 035E 5C01              movw R10,R24
 0360                   .dbline 201
 0360           ;       j <<= 2;                                                                                                                //  ... and now in bytes
 0360 AA0C              lsl R10
 0362 BB1C              rol R11
 0364 AA0C              lsl R10
 0366 BB1C              rol R11
 0368                   .dbline 202
 0368           ;       j += i;                                                                                                                 // point to data (immediately follows the IP header)
 0368 A40E              add R10,R20
 036A B51E              adc R11,R21
 036C                   .dbline 203
 036C           ;       i += sizeof(T_IP_Header);                                                                               // point to header options
 036C 4C5E              subi R20,236  ; offset = 20
 036E 5F4F              sbci R21,255
 0370 51C0              xjmp L74
 0372           L73:
 0372                   .dbline 205
 0372           ;       while (i < j)                                                                                                   //
 0372           ;       {                                                                                                                               // go thru each IP header option
 0372                   .dbline 206
 0372           ;               type = MainBuffer[i++];                                                                         // option type
 0372 1A01              movw R2,R20
 0374 4F5F              subi R20,255  ; offset = 1
 0376 5F4F              sbci R21,255
 0378 80E0              ldi R24,<_MainBuffer
 037A 90E0              ldi R25,>_MainBuffer
 037C F101              movw R30,R2
 037E E80F              add R30,R24
 0380 F91F              adc R31,R25
 0382 E080              ldd R14,z+0
 0384                   .dbline 207
 0384           ;               len = 0;                                                                                                        //
 0384 CC24              clr R12
 0386                   .dbline 208
 0386           ;               if (type >= 2) len = MainBuffer[i++];                                           // option length
 0386 8E2D              mov R24,R14
 0388 8230              cpi R24,2
 038A 48F0              brlo L76
 038C                   .dbline 208
 038C 1A01              movw R2,R20
 038E 4F5F              subi R20,255  ; offset = 1
 0390 5F4F              sbci R21,255
 0392 80E0              ldi R24,<_MainBuffer
 0394 90E0              ldi R25,>_MainBuffer
 0396 F101              movw R30,R2
 0398 E80F              add R30,R24
 039A F91F              adc R31,R25
 039C C080              ldd R12,z+0
 039E           L76:
 039E                   .dbline 210
 039E           ; 
 039E           ;               if (!SendDebugRStr(ip_str14)) return;
 039E 00E0              ldi R16,<_ip_str14
 03A0 10E0              ldi R17,>_ip_str14
 03A2 0E940000          xcall _SendDebugRStr
 03A6 0023              tst R16
 03A8 09F4              brne L78
 03AA                   .dbline 210
 03AA 51C0              xjmp L13
 03AC           L78:
 03AC                   .dbline 211
 03AC           ;               if (type < 2)
 03AC 8E2D              mov R24,R14
 03AE 8230              cpi R24,2
 03B0 58F4              brsh L80
 03B2                   .dbline 212
 03B2           ;                       sprintf((char*)ScratchPad, "%u\n", type);
 03B2 282E              mov R2,R24
 03B4 3324              clr R3
 03B6 3982              std y+1,R3
 03B8 2882              std y+0,R2
 03BA 20E0              ldi R18,<L82
 03BC 30E0              ldi R19,>L82
 03BE 00E0              ldi R16,<_ScratchPad
 03C0 10E0              ldi R17,>_ScratchPad
 03C2 0E940000          xcall _sprintf
 03C6 0EC0              xjmp L81
 03C8           L80:
 03C8                   .dbline 214
 03C8           ;               else
 03C8           ;                       sprintf((char*)ScratchPad, "%u  len:%u\n", type, len);
 03C8 2C2C              mov R2,R12
 03CA 3324              clr R3
 03CC 3B82              std y+3,R3
 03CE 2A82              std y+2,R2
 03D0 2E2C              mov R2,R14
 03D2 3324              clr R3
 03D4 3982              std y+1,R3
 03D6 2882              std y+0,R2
 03D8 20E0              ldi R18,<L83
 03DA 30E0              ldi R19,>L83
 03DC 00E0              ldi R16,<_ScratchPad
 03DE 10E0              ldi R17,>_ScratchPad
 03E0 0E940000          xcall _sprintf
 03E4           L81:
 03E4                   .dbline 215
 03E4           ;               if (!SendDebugStr((char*)ScratchPad)) return;
 03E4 00E0              ldi R16,<_ScratchPad
 03E6 10E0              ldi R17,>_ScratchPad
 03E8 0E940000          xcall _SendDebugStr
 03EC 0023              tst R16
 03EE 09F4              brne L84
 03F0                   .dbline 215
 03F0 2EC0              xjmp L13
 03F2           L84:
 03F2                   .dbline 217
 03F2           ; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -