📄 ip.lis
字号:
01A6 80EC ldi R24,192
01A8 F201 movw R30,R4
01AA 8487 std z+12,R24
01AC .dbline 83
01AC ; *(ipbegin+13)=myip_2;
01AC 88EA ldi R24,168
01AE F201 movw R30,R4
01B0 8587 std z+13,R24
01B2 .dbline 84
01B2 ; *(ipbegin+14)=myip_1;
01B2 2224 clr R2
01B4 F201 movw R30,R4
01B6 2686 std z+14,R2
01B8 .dbline 85
01B8 ; *(ipbegin+15)=myip_0;
01B8 83E6 ldi R24,99
01BA F201 movw R30,R4
01BC 8787 std z+15,R24
01BE .dbline 87
01BE ;
01BE ; *(ipbegin+16)=sou_ip3;//写入远程IP
01BE F201 movw R30,R4
01C0 C08A std z+16,R12
01C2 .dbline 88
01C2 ; *(ipbegin+17)=sou_ip2;
01C2 F201 movw R30,R4
01C4 A18A std z+17,R10
01C6 .dbline 89
01C6 ; *(ipbegin+18)=sou_ip1;
01C6 F201 movw R30,R4
01C8 628B std z+18,R22
01CA .dbline 90
01CA ; *(ipbegin+19)=sou_ip0;
01CA F201 movw R30,R4
01CC E38A std z+19,R14
01CE .dbline 91
01CE ; break;
01CE 12C0 xjmp L8
01D0 L11:
01D0 .dbline 93
01D0 ; }
01D0 ; protocol=0;
01D0 4427 clr R20
01D2 .dbline 94
01D2 ; break;
01D2 10C0 xjmp L8
01D4 X1:
01D4 .dbline 96
01D4 ; case 6: //TCP协议
01D4 ; break;
01D4 L14:
01D4 .dbline 99
01D4 ;
01D4 ; case 17: //UDP协议
01D4 ; if(udp_packhandle(ipbegin+ipheadlen,totallen-ipheadlen))
01D4 2A84 ldd R2,y+10
01D6 3324 clr R3
01D8 2C81 ldd R18,y+4
01DA 3D81 ldd R19,y+5
01DC 2219 sub R18,R2
01DE 3309 sbc R19,R3
01E0 022D mov R16,R2
01E2 1127 clr R17
01E4 040D add R16,R4
01E6 151D adc R17,R5
01E8 0E940000 xcall _udp_packhandle
01EC 0023 tst R16
01EE 09F0 breq L15
01F0 .dbline 100
01F0 ; {
01F0 .dbline 101
01F0 ; break;
01F0 01C0 xjmp L8
01F2 L15:
01F2 .dbline 103
01F2 ; }
01F2 ; protocol=0;
01F2 4427 clr R20
01F4 .dbline 105
01F4 ;
01F4 ; default:break;
01F4 L8:
01F4 .dbline 108
01F4 ; }
01F4 ;
01F4 ; return(protocol);
01F4 042F mov R16,R20
01F6 .dbline -2
01F6 L1:
01F6 2B96 adiw R28,11
01F8 0E940000 xcall pop_gset5
01FC .dbline 0 ; func end
01FC 0895 ret
01FE .dbsym r handleok 20 c
01FE .dbsym l ipcksum 0 i
01FE .dbsym r sou_ip0 14 c
01FE .dbsym r sou_ip1 22 c
01FE .dbsym r sou_ip2 10 c
01FE .dbsym r sou_ip3 12 c
01FE .dbsym l ipheadlen 10 c
01FE .dbsym l offset 8 i
01FE .dbsym l ippackid 6 i
01FE .dbsym r protocol 20 c
01FE .dbsym l totallen 4 i
01FE .dbsym r ipbegin 4 pc
01FE .dbend
01FE .dbfunc e ip_buildpack _ip_buildpack fV
01FE ; i -> R10
01FE ; sum -> R10,R11
01FE ; des_ip0 -> y+22
01FE ; des_ip1 -> y+20
01FE ; des_ip2 -> y+18
01FE ; des_ip3 -> y+16
01FE ; protocol -> y+14
01FE ; ipid -> y+12
01FE ; totallen -> R22,R23
01FE ; ipsendbuffer -> R20,R21
.even
01FE _ip_buildpack::
01FE 0E940000 xcall push_gset3
0202 B901 movw R22,R18
0204 A801 movw R20,R16
0206 2697 sbiw R28,6
0208 .dbline -1
0208 .dbline 120
0208 ; }
0208 ;
0208 ; void ip_buildpack(unsigned char *ipsendbuffer,
0208 ; unsigned int totallen,
0208 ; unsigned int ipid,
0208 ; unsigned char protocol,
0208 ; unsigned char des_ip3,
0208 ; unsigned char des_ip2,
0208 ; unsigned char des_ip1,
0208 ; unsigned char des_ip0
0208 ; )
0208 ; {
0208 .dbline 121
0208 ; unsigned char i=0;
0208 AA24 clr R10
020A .dbline 122
020A ; unsigned int sum=0;
020A BB24 clr R11
020C .dbline 123
020C ; ip_id++; //生成IP标识
020C 80910000 lds R24,_ip_id
0210 90910100 lds R25,_ip_id+1
0214 0196 adiw R24,1
0216 90930100 sts _ip_id+1,R25
021A 80930000 sts _ip_id,R24
021E .dbline 124
021E ; *ipsendbuffer=0x45; //版本4,头部长20
021E 85E4 ldi R24,69
0220 FA01 movw R30,R20
0222 8083 std z+0,R24
0224 .dbline 125
0224 ; *(ipsendbuffer+1)=0x00; //服务类型
0224 2224 clr R2
0226 2182 std z+1,R2
0228 .dbline 126
0228 ; *(ipsendbuffer+2)=totallen>>8;
0228 1B01 movw R2,R22
022A 232C mov R2,R3
022C 3324 clr R3
022E FA01 movw R30,R20
0230 2282 std z+2,R2
0232 .dbline 127
0232 ; *(ipsendbuffer+3)=(totallen&0xFF);
0232 CB01 movw R24,R22
0234 9070 andi R25,0
0236 FA01 movw R30,R20
0238 8383 std z+3,R24
023A .dbline 128
023A ; *(ipsendbuffer+4)=ipid>>8;
023A 2C84 ldd R2,y+12
023C 3D84 ldd R3,y+13
023E 232C mov R2,R3
0240 3324 clr R3
0242 FA01 movw R30,R20
0244 2482 std z+4,R2
0246 .dbline 129
0246 ; *(ipsendbuffer+5)=(ipid&0xFF);
0246 8C85 ldd R24,y+12
0248 9D85 ldd R25,y+13
024A 9070 andi R25,0
024C FA01 movw R30,R20
024E 8583 std z+5,R24
0250 .dbline 130
0250 ; *(ipsendbuffer+6)=0;
0250 2224 clr R2
0252 FA01 movw R30,R20
0254 2682 std z+6,R2
0256 .dbline 131
0256 ; *(ipsendbuffer+7)=0;
0256 FA01 movw R30,R20
0258 2782 std z+7,R2
025A .dbline 132
025A ; *(ipsendbuffer+8)=128;
025A 80E8 ldi R24,128
025C FA01 movw R30,R20
025E 8087 std z+8,R24
0260 .dbline 133
0260 ; *(ipsendbuffer+9)=protocol;
0260 FA01 movw R30,R20
0262 0E84 ldd R0,y+14
0264 0186 std z+9,R0
0266 .dbline 134
0266 ; *(ipsendbuffer+10)=0;
0266 FA01 movw R30,R20
0268 2286 std z+10,R2
026A .dbline 135
026A ; *(ipsendbuffer+11)=0;
026A FA01 movw R30,R20
026C 2386 std z+11,R2
026E .dbline 136
026E ; *(ipsendbuffer+12)=myip_3;
026E 80EC ldi R24,192
0270 FA01 movw R30,R20
0272 8487 std z+12,R24
0274 .dbline 137
0274 ; *(ipsendbuffer+13)=myip_2;
0274 88EA ldi R24,168
0276 FA01 movw R30,R20
0278 8587 std z+13,R24
027A .dbline 138
027A ; *(ipsendbuffer+14)=myip_1;
027A FA01 movw R30,R20
027C 2686 std z+14,R2
027E .dbline 139
027E ; *(ipsendbuffer+15)=myip_0;
027E 83E6 ldi R24,99
0280 FA01 movw R30,R20
0282 8787 std z+15,R24
0284 .dbline 140
0284 ; *(ipsendbuffer+16)=des_ip3;
0284 FA01 movw R30,R20
0286 0888 ldd R0,y+16
0288 008A std z+16,R0
028A .dbline 141
028A ; *(ipsendbuffer+17)=des_ip2;
028A FA01 movw R30,R20
028C 0A88 ldd R0,y+18
028E 018A std z+17,R0
0290 .dbline 142
0290 ; *(ipsendbuffer+18)=des_ip1;
0290 FA01 movw R30,R20
0292 0C88 ldd R0,y+20
0294 028A std z+18,R0
0296 .dbline 143
0296 ; *(ipsendbuffer+19)=des_ip0;
0296 FA01 movw R30,R20
0298 0E88 ldd R0,y+22
029A 038A std z+19,R0
029C .dbline 145
029C ;
029C ; sum=tsum((unsigned int *)ipsendbuffer,20); //校验和的求法
029C 24E1 ldi R18,20
029E 30E0 ldi R19,0
02A0 8A01 movw R16,R20
02A2 0E940000 xcall _tsum
02A6 5801 movw R10,R16
02A8 .dbline 146
02A8 ; *(ipsendbuffer+10)=(sum&0xFF);
02A8 C501 movw R24,R10
02AA 9070 andi R25,0
02AC FA01 movw R30,R20
02AE 8287 std z+10,R24
02B0 .dbline 147
02B0 ; *(ipsendbuffer+11)=(sum>>8)&0xFF;
02B0 C501 movw R24,R10
02B2 892F mov R24,R25
02B4 9927 clr R25
02B6 9070 andi R25,0
02B8 FA01 movw R30,R20
02BA 8387 std z+11,R24
02BC .dbline 149
02BC ;
02BC ; totallen-=20;
02BC 6451 subi R22,20
02BE 7040 sbci R23,0
02C0 .dbline 151
02C0 ;
02C0 ; switch(protocol)
02C0 2E84 ldd R2,y+14
02C2 3324 clr R3
02C4 3D82 std y+5,R3
02C6 2C82 std y+4,R2
02C8 C101 movw R24,R2
02CA 8131 cpi R24,17
02CC E0E0 ldi R30,0
02CE 9E07 cpc R25,R30
02D0 09F0 breq L23
02D2 18C0 xjmp L21
02D4 X5:
02D4 .dbline 152
02D4 ; {
02D4 L23:
02D4 .dbline 154
02D4 81E0 ldi R24,1
02D6 90E0 ldi R25,0
02D8 9B83 std y+3,R25
02DA 8A83 std y+2,R24
02DC 80E1 ldi R24,16
02DE 9983 std y+1,R25
02E0 8883 std y+0,R24
02E2 9B01 movw R18,R22
02E4 8A01 movw R16,R20
02E6 0C5E subi R16,236 ; offset = 20
02E8 1F4F sbci R17,255
02EA 0E940000 xcall _udp_buildpack
02EE .dbline 155
02EE CB01 movw R24,R22
02F0 0897 sbiw R24,8
02F2 9983 std y+1,R25
02F4 8883 std y+0,R24
02F6 20E0 ldi R18,<_udpsendbuffer_ex
02F8 30E0 ldi R19,>_udpsendbuffer_ex
02FA 8A01 movw R16,R20
02FC 0C5E subi R16,236 ; offset = 20
02FE 1F4F sbci R17,255
0300 0E940000 xcall _udp_builddata
0304 .dbline 156
0304 .dbline 158
0304 L21:
0304 .dbline -2
0304 L19:
0304 2696 adiw R28,6
0306 0E940000 xcall pop_gset3
030A .dbline 0 ; func end
030A 0895 ret
030C .dbsym r i 10 c
030C .dbsym r sum 10 i
030C .dbsym l des_ip0 22 c
030C .dbsym l des_ip1 20 c
030C .dbsym l des_ip2 18 c
030C .dbsym l des_ip3 16 c
030C .dbsym l protocol 14 c
030C .dbsym l ipid 12 i
030C .dbsym r totallen 22 i
030C .dbsym r ipsendbuffer 20 pc
030C .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\hexok项目\AVRNET项目\AVRNET光盘\icc例子\ip.c
0000 _tempip_d0::
0000 .blkb 1
0001 .dbsym e tempip_d0 _tempip_d0 c
0001 _tempip_d1::
0001 .blkb 1
0002 .dbsym e tempip_d1 _tempip_d1 c
0002 _tempip_d2::
0002 .blkb 1
0003 .dbsym e tempip_d2 _tempip_d2 c
0003 _tempip_d3::
0003 .blkb 1
0004 .dbsym e tempip_d3 _tempip_d3 c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -