亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ip.s

?? AVR單片機系統開發經典實例部分源程序
?? S
?? 第 1 頁 / 共 4 頁
字號:
	xjmp L13
X3:
	.dbline 179
; 								break;
L54:
	.dbline 180
; 		case IP_PROTO_TCP	:	if (!SendDebugRStr(ip_str12)) return;
	ldi R16,<_ip_str12
	ldi R17,>_ip_str12
	xcall _SendDebugRStr
	tst R16
	brne L46
	.dbline 180
	xjmp L13
X4:
	.dbline 181
; 								break;
L45:
L46:
	.dbline 183
; 	}
; 	sprintf((char*)ScratchPad, " [%04X]", IP_Header->Protocol);
	lds R30,_IP_Header
	lds R31,_IP_Header+1
	ldd R2,z+9
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,<L59
	ldi R19,>L59
	ldi R16,<_ScratchPad
	ldi R17,>_ScratchPad
	xcall _sprintf
	.dbline 184
; 	if (!SendDebugStr((char*)ScratchPad)) return;
	ldi R16,<_ScratchPad
	ldi R17,>_ScratchPad
	xcall _SendDebugStr
	tst R16
	brne L60
	.dbline 184
	xjmp L13
L60:
	.dbline 186
; 
; 	if (!SendDebugRStr(ip_str13)) return;
	ldi R16,<_ip_str13
	ldi R17,>_ip_str13
	xcall _SendDebugRStr
	tst R16
	brne L62
	.dbline 186
	xjmp L13
L62:
	.dbline 187
; 	sprintf((char*)ScratchPad, "%04X ", ntohs(IP_Header->Checksum));
	lds R30,_IP_Header
	lds R31,_IP_Header+1
	ldd R16,z+10
	ldd R17,z+11
	xcall _ntohs
	std y+1,R17
	std y+0,R16
	ldi R18,<L64
	ldi R19,>L64
	ldi R16,<_ScratchPad
	ldi R17,>_ScratchPad
	xcall _sprintf
	.dbline 188
; 	if (!SendDebugStr((char*)ScratchPad)) return;
	ldi R16,<_ScratchPad
	ldi R17,>_ScratchPad
	xcall _SendDebugStr
	tst R16
	brne L65
	.dbline 188
	xjmp L13
L65:
	.dbline 190
; 
; 	IP_Str((char*)ScratchPad, IP_Header->SourceIP.ip32);
	lds R30,_IP_Header
	lds R31,_IP_Header+1
	ldd R2,z+12
	ldd R3,z+13
	ldd R4,z+14
	ldd R5,z+15
	std y+0,R4
	std y+1,R5
	movw R18,R2
	ldi R16,<_ScratchPad
	ldi R17,>_ScratchPad
	xcall _IP_Str
	.dbline 191
; 	strcat((char*)ScratchPad, " > ");
	ldi R18,<L67
	ldi R19,>L67
	ldi R16,<_ScratchPad
	ldi R17,>_ScratchPad
	xcall _strcat
	.dbline 192
; 	IP_Str((char*)ScratchPad + strlen((char*)ScratchPad), IP_Header->DestIP.ip32);
	ldi R16,<_ScratchPad
	ldi R17,>_ScratchPad
	xcall _strlen
	lds R30,_IP_Header
	lds R31,_IP_Header+1
	ldd R2,z+16
	ldd R3,z+17
	ldd R4,z+18
	ldd R5,z+19
	std y+0,R4
	std y+1,R5
	movw R18,R2
	ldi R24,<_ScratchPad
	ldi R25,>_ScratchPad
	add R16,R24
	adc R17,R25
	xcall _IP_Str
	.dbline 193
; 	if (!SendDebugStr((char*)ScratchPad)) return;
	ldi R16,<_ScratchPad
	ldi R17,>_ScratchPad
	xcall _SendDebugStr
	tst R16
	brne L68
	.dbline 193
	xjmp L13
L68:
	.dbline 195
; 
; 	if (!SendDebugStr("\n")) return;
	ldi R16,<L72
	ldi R17,>L72
	xcall _SendDebugStr
	tst R16
	brne L70
	.dbline 195
	xjmp L13
L70:
	.dbline 199
; 
; 	// display any header options
; 
; 	i = HeaderIdx;													// index of header
	movw R20,R10
	.dbline 200
; 	j = (int)(IP_Header->VerLen & 0x0f);							// j = length of header in 32-bit dwords
	lds R30,_IP_Header
	lds R31,_IP_Header+1
	ldd R24,z+0
	clr R25
	andi R24,15
	andi R25,0
	movw R10,R24
	.dbline 201
; 	j <<= 2;														//  ... and now in bytes
	lsl R10
	rol R11
	lsl R10
	rol R11
	.dbline 202
; 	j += i;															// point to data (immediately follows the IP header)
	add R10,R20
	adc R11,R21
	.dbline 203
; 	i += sizeof(T_IP_Header);										// point to header options
	subi R20,236  ; offset = 20
	sbci R21,255
	xjmp L74
L73:
	.dbline 205
; 	while (i < j)													//
; 	{																// go thru each IP header option
	.dbline 206
; 		type = MainBuffer[i++];										// option type
	movw R2,R20
	subi R20,255  ; offset = 1
	sbci R21,255
	ldi R24,<_MainBuffer
	ldi R25,>_MainBuffer
	movw R30,R2
	add R30,R24
	adc R31,R25
	ldd R14,z+0
	.dbline 207
; 		len = 0;													//
	clr R12
	.dbline 208
; 		if (type >= 2) len = MainBuffer[i++];						// option length
	mov R24,R14
	cpi R24,2
	brlo L76
	.dbline 208
	movw R2,R20
	subi R20,255  ; offset = 1
	sbci R21,255
	ldi R24,<_MainBuffer
	ldi R25,>_MainBuffer
	movw R30,R2
	add R30,R24
	adc R31,R25
	ldd R12,z+0
L76:
	.dbline 210
; 
; 		if (!SendDebugRStr(ip_str14)) return;
	ldi R16,<_ip_str14
	ldi R17,>_ip_str14
	xcall _SendDebugRStr
	tst R16
	brne L78
	.dbline 210
	xjmp L13
L78:
	.dbline 211
; 		if (type < 2)
	mov R24,R14
	cpi R24,2
	brsh L80
	.dbline 212
; 			sprintf((char*)ScratchPad, "%u\n", type);
	mov R2,R24
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,<L82
	ldi R19,>L82
	ldi R16,<_ScratchPad
	ldi R17,>_ScratchPad
	xcall _sprintf
	xjmp L81
L80:
	.dbline 214
; 		else
; 			sprintf((char*)ScratchPad, "%u  len:%u\n", type, len);
	mov R2,R12
	clr R3
	std y+3,R3
	std y+2,R2
	mov R2,R14
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,<L83
	ldi R19,>L83
	ldi R16,<_ScratchPad
	ldi R17,>_ScratchPad
	xcall _sprintf
L81:
	.dbline 215
; 		if (!SendDebugStr((char*)ScratchPad)) return;
	ldi R16,<_ScratchPad
	ldi R17,>_ScratchPad
	xcall _SendDebugStr
	tst R16
	brne L84
	.dbline 215
	xjmp L13
L84:
	.dbline 217
; 
; 		if (!type) break;											// end of option list
	tst R14
	brne L86
	.dbline 217
	xjmp L75
L86:
	.dbline 218
; 		if (type == 1) continue;									// no length byte (NOP option)
	mov R24,R14
	cpi R24,1
	brne L88
	.dbline 218
	xjmp L74
L88:
	.dbline 220
; 																	//
; 		if (len < 2) len = 2;										//
	mov R24,R12
	cpi R24,2
	brsh L90
	.dbline 220
	ldi R24,2
	mov R12,R24
L90:
	.dbline 224
	mov R24,R12
	clr R25
	sbiw R24,2
	add R20,R24
	adc R21,R25
	.dbline 225
L74:
	.dbline 204
	cp R20,R10
	cpc R21,R11
	brge X5
	xjmp L73
X5:
L75:
	.dbline 226
; 																	//
; 
; 																	//
; 		i += (len - 2);												//
; 	}																//
; 	i = j;
	movw R20,R10
	.dbline 230
; 
; 	// done
; 
; 	if (!SendDebugRStr(ip_str15)) return;
	ldi R16,<_ip_str15
	ldi R17,>_ip_str15
	xcall _SendDebugRStr
	tst R16
	brne L92
	.dbline 230
	xjmp L13
L92:
	.dbline 231
	movw R2,R22
	sub R2,R20
	sbc R3,R21
	std y+1,R3
	std y+0,R2
	ldi R18,<L82
	ldi R19,>L82
	ldi R16,<_ScratchPad
	ldi R17,>_ScratchPad
	xcall _sprintf
	.dbline 232
	ldi R16,<_ScratchPad
	ldi R17,>_ScratchPad
	xcall _SendDebugStr
	tst R16
	brne L94
	.dbline 232
L94:
	.dbline -2
L13:
	adiw R28,4
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r j 10 I
	.dbsym r i 20 I
	.dbsym r len 12 c
	.dbsym r type 14 c
	.dbsym r TotalBytes 22 I
	.dbsym r HeaderIdx 10 I
	.dbend
	.dbfunc e IP_FireWalled _IP_FireWalled fc
;              i -> R10,R11
;            dw1 -> y+2
	.even
_IP_FireWalled::
	xcall push_gset3
	sbiw R28,6
	.dbline -1
	.dbline 241
; 	sprintf((char*)ScratchPad, "%u\n", TotalBytes - i);
; 	if (!SendDebugStr((char*)ScratchPad)) return;
; }
; 
; #endif
; 
; // **************************************************************************
; // fire wall
; 
; bool IP_FireWalled(void)
; {	// return TRUE is we are fire walling it
	.dbline 246
; 	int	i;
; 	u32	dw1;
; //    u32 dw2;
; 
; 	if (PPP.THEIR_IP.ip32)
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_PPP+17+2
	lds R5,_PPP+17+2+1
	lds R2,_PPP+17
	lds R3,_PPP+17+1
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	breq L97
	.dbline 247
; 	{
	.dbline 248
; 		if (IP_Header->SourceIP.ip32 == PPP.THEIR_IP.ip32) return false; 		// it's the PPP server - allow it
	lds R30,_IP_Header
	lds R31,_IP_Header+1
	ldd R6,z+12
	ldd R7,z+13
	ldd R8,z+14
	ldd R9,z+15
	cp R6,R2
	cpc R7,R3
	cpc R8,R4
	cpc R9,R5
	brne L100
	.dbline 248
	clr R16
	xjmp L96
L100:
	.dbline 249
; 	}
L97:
	.dbline 250
; 	if (IP_Header->SourceIP.ip32 == PPP.DNS1_IP.ip32) return false;			 	// it's the primary dns server - allow it
	lds R4,_PPP+21+2
	lds R5,_PPP+21+2+1
	lds R2,_PPP+21
	lds R3,_PPP+21+1
	lds R30,_IP_Header
	lds R31,_IP_Header+1
	ldd R6,z+12
	ldd R7,z+13
	ldd R8,z+14
	ldd R9,z+15
	cp R6,R2
	cpc R7,R3
	cpc R8,R4
	cpc R9,R5
	brne L103
	.dbline 250
	clr R16
	xjmp L96
L103:
	.dbline 251
; 	if (IP_Header->SourceIP.ip32 == PPP.DNS2_IP.ip32) return false; 			// it's the secondary dns server - allow it
	lds R4,_PPP+25+2
	lds R5,_PPP+25+2+1
	lds R2,_PPP+25
	lds R3,_PPP+25+1
	lds R30,_IP_Header
	lds R31,_IP_Header+1
	ldd R6,z+12
	ldd R7,z+13
	ldd R8,z+14
	ldd R9,z+15
	cp R6,R2
	cpc R7,R3
	cpc R8,R4
	cpc R9,R5
	brne L106
	.dbline 251
	clr R16
	xjmp L96
L106:
	.dbline 253
; 																				//
; 	for (i = 0; ; i++)
	clr R10
	clr R11
L109:
	.dbline 254
; 	{
	.dbline 255
; 		rmemcpy((char*)&dw1, AllowedIP[i], 4);									//
	ldi R24,4
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R16,4
	ldi R17,0
	movw R18,R10
	xcall empy16s
	movw R18,R16
	ldi R24,<_AllowedIP
	ldi R25,>_AllowedIP
	add R18,R24
	adc R19,R25
	movw R16,R28
	subi R16,254  ; offset = 2
	sbci R17,255
	xcall _rmemcpy
	.dbline 256
; 		if (!dw1) break;														// end of list
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+2
	ldd R3,z+3
	ldd R4,z+4
	ldd R5,z+5
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brne L113
	.dbline 256
	xjmp L111
L113:
	.dbline 257
; 		if (IP_Header->SourceIP.ip32 == dw1) return false;						// allow it
	movw R30,R28
	ldd R2,z+2
	ldd R3,z+3
	ldd R4,z+4
	ldd R5,z+5
	lds R30,_IP_Header
	lds R31,_IP_Header+1
	ldd R6,z+12
	ldd R7,z+13
	ldd R8,z+14
	ldd R9,z+15
	cp R6,R2
	cpc R7,R3
	cpc R8,R4
	cpc R9,R5
	brne L115
	.dbline 257
	clr R16
	xjmp L96
L115:
	.dbline 258
L110:
	.dbline 253
	movw R24,R10
	adiw R24,1
	movw R10,R24
	.dbline 253
	xjmp L109
L111:
	.dbline 266
; 	}
; 
; //	rmemcpy((char*)&dw1, SubnetMask, 4);										//
; //	dw2 = IP_Header->SourceIP.ip32 & dw1;										//
; //	dw1 &= PPP.OUR_IP.ip32;														//
; //	if (dw1 != dw2) return true;												// different subnet - firewall it
; 
; //	return false;																	// let it thru
; 	return true;																	// firewall it
	ldi R16,1
	.dbline -2
L96:
	adiw R28,6
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r i 10 I
	.dbsym l dw1 2 l
	.dbend
	.dbfunc e IP_Checksum _IP_Checksum fl
;              q -> R10,R11
;       checksum -> y+0
;              i -> R12,R13
;            len -> R14,R15
;              p -> R12,R13
	.even
_IP_Checksum::
	xcall push_gset5
	movw R14,R18
	movw R12,R16
	sbiw R28,4
	.dbline -1
	.dbline 273
; }
; 
; // **************************************************************************
; // Calculate a checksum - used in IP packets
; 
; u32 IP_Checksum(char *p, u16 len)
; {	// this one REALLY needs to be as fast as possible - best to do this in assembler code
	.dbline 275
; 	register u16	i;
; 	register u32	checksum = 0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+0,R20
	std z+1,R21
	std z+2,R22
	std z+3,R23
	.dbline 278
; 	register u16	*q;
; 
; 	if (!p) return 0;
	tst R12
	brne L118
	tst R13
	brne L118
X6:
	.dbline 278
	ldi R16,0
	ldi R17,0
	ldi R18,0
	ldi R19,0
	xjmp L117
L118:
	.dbline 279
; 	if (len == 0) return 0;
	tst R14
	brne L120
	tst R15
	brne L120
X7:
	.dbline 279
	ldi R16,0
	ldi R17,0
	ldi R18,0
	ldi R19,0
	xjmp L117
L120:
	.dbline 281
; 
; 	q = (u16*)p;
	movw R10,R12
	.dbline 283
	clr R12
	clr R13
	xjmp L125
L122:
	.dbline 283
	movw R30,R10
	ld R16,Z+

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99九九99精品| 另类欧美日韩国产在线| 91亚洲国产成人精品一区二三 | 91国产视频在线观看| 亚洲欧美日韩一区二区三区在线观看| 不卡的av在线播放| 亚洲免费观看高清完整 | 欧美区一区二区三区| 爽好久久久欧美精品| 精品理论电影在线| 国产久卡久卡久卡久卡视频精品| 国产三级三级三级精品8ⅰ区| 国产麻豆视频精品| 国产精品福利一区二区三区| 一本久道久久综合中文字幕| 视频一区国产视频| 欧美大白屁股肥臀xxxxxx| 国产精品夜夜爽| 亚洲视频一区二区在线| 欧美日本韩国一区二区三区视频| 蜜臀av性久久久久蜜臀aⅴ流畅 | 99国产精品视频免费观看| 日韩理论电影院| 4438x成人网最大色成网站| 国产在线不卡一区| 中文字幕永久在线不卡| 56国语精品自产拍在线观看| 国产最新精品免费| 亚洲色大成网站www久久九九| 欧美日本一区二区三区四区| 国产v日产∨综合v精品视频| 亚洲一区二区三区美女| 久久综合色鬼综合色| 色伊人久久综合中文字幕| 日本特黄久久久高潮| 亚洲欧洲一区二区在线播放| 5月丁香婷婷综合| 91浏览器打开| 久久国产综合精品| 亚洲一区二区三区国产| 国产欧美日产一区| 91精品国模一区二区三区| eeuss鲁片一区二区三区在线看| 青青青伊人色综合久久| 亚洲欧美一区二区三区孕妇| 精品欧美一区二区久久| 日本韩国一区二区三区视频| 国产自产视频一区二区三区| 午夜国产精品影院在线观看| 中文字幕日韩一区二区| 日韩精品中文字幕在线一区| 在线中文字幕一区| 不卡的电影网站| 国产成都精品91一区二区三| 蜜桃视频一区二区三区| 亚洲国产精品自拍| 一区二区在线观看视频在线观看| 久久久久青草大香线综合精品| 欧美精品一二三| 在线观看视频一区二区| 成人精品国产一区二区4080| 国产精品资源站在线| 久久99精品一区二区三区| 亚洲电影一级片| 亚洲美女淫视频| 亚洲欧美日本韩国| 亚洲男人的天堂一区二区| 国产三级精品视频| 国产性做久久久久久| 精品国产乱码久久久久久1区2区 | 美脚の诱脚舐め脚责91| 天天色天天操综合| 亚洲6080在线| 亚洲第一在线综合网站| 亚洲国产精品一区二区尤物区| 亚洲美女视频一区| 亚洲精品免费电影| 一区二区三区欧美日| 亚洲精品久久久蜜桃| 亚洲免费资源在线播放| 亚洲欧美激情在线| 一区二区三区日韩精品视频| 亚洲精品ww久久久久久p站| 亚洲黄色尤物视频| 亚洲成人免费在线观看| 热久久国产精品| 看片网站欧美日韩| 国产在线观看免费一区| 国v精品久久久网| 暴力调教一区二区三区| 色综合久久天天| 欧美日韩一区二区在线观看| 777午夜精品视频在线播放| 欧美精选午夜久久久乱码6080| 欧美一区二区三区在线观看视频 | 国产亚洲一区二区在线观看| 国产精品色在线| 亚洲激情六月丁香| 日韩一区精品字幕| 韩国一区二区在线观看| 成人美女在线观看| 在线精品视频一区二区三四| 欧美丰满少妇xxxxx高潮对白| 日韩欧美色电影| 国产精品毛片久久久久久| 亚洲精品成人在线| 免费成人av在线| 成人av电影在线| 欧美日韩三级一区二区| 久久亚洲私人国产精品va媚药| 国产精品久久久久影视| 亚洲午夜影视影院在线观看| 久久99国产乱子伦精品免费| 成人a级免费电影| 欧美日韩精品是欧美日韩精品| 日韩午夜在线观看| 国产精品私房写真福利视频| 亚洲二区在线观看| 国产精品12区| 欧美久久久久免费| 国产精品久久久久婷婷二区次 | 奇米影视一区二区三区| 国产成人免费在线观看| 欧美在线啊v一区| 亚洲精品一线二线三线无人区| 亚洲视频一二区| 久久99久久久欧美国产| 欧美性视频一区二区三区| 国产亚洲美州欧州综合国| 日韩电影在线免费观看| 99久久精品免费看| 欧美一级在线观看| 亚洲精品第1页| 懂色中文一区二区在线播放| 欧美三级三级三级| 18欧美亚洲精品| 国产精品一品二品| 欧美日本免费一区二区三区| 亚洲欧美日韩人成在线播放| 国内不卡的二区三区中文字幕| 欧美三区免费完整视频在线观看| 日本一区二区三区在线不卡| 麻豆国产精品官网| 欧美日韩国产美| 一区二区三区中文在线| 成人性生交大片免费看在线播放| 日韩欧美一区二区视频| 亚洲线精品一区二区三区八戒| eeuss鲁一区二区三区| 国产亚洲污的网站| 精品系列免费在线观看| 欧美精选午夜久久久乱码6080| 亚洲激情自拍视频| 91视频在线看| 日韩一区在线看| 成人动漫一区二区三区| 国产日产欧美精品一区二区三区| 精品写真视频在线观看| 欧美成人r级一区二区三区| 日韩专区欧美专区| 欧美色图第一页| 亚洲一区二区五区| 欧美三级午夜理伦三级中视频| 一区二区三区不卡视频| 色综合天天综合在线视频| 最新热久久免费视频| 不卡的av网站| 亚洲桃色在线一区| 91成人在线免费观看| 亚洲美女屁股眼交3| 欧美亚洲国产一区二区三区va| 日韩伦理av电影| 欧美在线你懂的| 婷婷国产v国产偷v亚洲高清| 欧美日韩国产电影| 另类小说视频一区二区| 精品电影一区二区三区| 国产精品99久久久| 自拍偷拍国产精品| 欧美在线你懂得| 青青草成人在线观看| 日韩精品专区在线影院观看| 韩国av一区二区三区在线观看| 国产日韩一级二级三级| 99热精品一区二区| 亚洲一区二区三区视频在线播放 | 亚洲一区二区在线观看视频| 欧美在线一二三四区| 日韩电影在线观看电影| 精品久久久久久久久久久久久久久久久| 麻豆精品在线播放| 国产精品毛片久久久久久| 色噜噜狠狠成人中文综合| 午夜精品福利久久久| 欧美r级电影在线观看| 成人福利视频网站| 五月天丁香久久| 精品88久久久久88久久久| 99久久久久免费精品国产| 亚洲va国产天堂va久久en|