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

📄 httpserv.s

📁 单片机C语言程序设计实训100例--基于AVR+PROTEUS仿真
💻 S
📖 第 1 页 / 共 5 页
字号:
	std y+16,R8
	std y+17,R9
	.dbline 421
;             fprintf_P(stream, tfmt, (uptr_t) tnp, ticks_left, tnp->tn_ticks, (uptr_t) tnp->tn_callback, (uptr_t) tnp->tn_arg);
	movw R30,R12
	ldd R2,z+14
	ldd R3,z+15
	std y+13,R3
	std y+12,R2
	ldd R2,z+12
	ldd R3,z+13
	std y+11,R3
	std y+10,R2
	adiw R30,4
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	std y+6,R2
	std y+7,R3
	std y+8,R4
	std y+9,R5
	ldd R2,y+14
	ldd R3,y+15
	ldd R4,y+16
	ldd R5,y+17
	std y+2,R2
	std y+3,R3
	std y+4,R4
	std y+5,R5
	std y+1,R13
	std y+0,R12
	ldi R18,<L65
	ldi R19,>L65
	movw R16,R10
	xcall _fprintf_P
	.dbline 422
;             tnp = tnp->tn_next;
	movw R30,R12
	ldd R12,z+0
	ldd R13,z+1
	.dbline 423
;         }
L70:
	.dbline 419
	tst R12
	breq X17
	xjmp L69
X17:
	tst R13
	breq X18
	xjmp L69
X18:
X15:
	.dbline 424
;     }
L67:
	.dbline 426
; 
;     fputs_P(foot, stream);
	movw R18,R10
	ldi R16,<L66
	ldi R17,>L66
	xcall _fputs_P
	.dbline 427
;     fflush(stream);
	movw R16,R10
	xcall _fflush
	.dbline 429
; 
;     return 0;
	clr R16
	clr R17
	.dbline -2
L62:
	.dbline 0 ; func end
	adiw R28,18
	xjmp pop_xgsetF03C
	.dbsym l ticks_left 14 l
	.dbsym r tnp 12 pS[_NUTTIMERINFO]
	.dbsym r req 12 pS[_REQUEST]
	.dbsym r stream 10 pS[__iobuf]
	.dbend
	.area lit(rom, con, rel)
L73:
	.byte 60,'H,'T,'M,'L,62,60,'H,'E,'A,'D,62,60,'T,'I,'T
	.byte 'L,'E,62,'S,'o,'c,'k,'e,'t,'s,60,47,'T,'I,'T,'L
	.byte 'E,62,60,47,'H,'E,'A,'D,62,60,'B,'O,'D,'Y,62,60
	.byte 'H,49,62,'S,'o,'c,'k,'e,'t,'s,60,47,'H,49,62,13
	.byte 10,60,'T,'A,'B,'L,'E,32,'B,'O,'R,'D,'E,'R,62,60
	.byte 'T,'R,62,60,'T,'H,62,'H,'a,'n,'d,'l,'e,60,47,'T
	.byte 'H,62,60,'T,'H,62,'T,'y,'p,'e,60,47,'T,'H,62,60
	.byte 'T,'H,62,'L,'o,'c,'a,'l,60,47,'T,'H,62,60,'T,'H
	.byte 62,'R,'e,'m,'o,'t,'e,60,47,'T,'H,62,60,'T,'H,62
	.byte 'S,'t,'a,'t,'u,'s,60,47,'T,'H,62,60,47,'T,'R,62
	.byte 13,10,0
L74:
	.byte 60,'T,'R,62,60,'T,'D,62,37,48,52,'X,60,47,'T,'D
	.byte 62,60,'T,'D,62,'T,'C,'P,60,47,'T,'D,62,60,'T,'D
	.byte 62,37,'s,58,37,'u,60,47,'T,'D,62,0
L75:
	.byte 60,'T,'D,62,37,'s,58,37,'u,60,47,'T,'D,62,60,'T
	.byte 'D,62,0
L76:
	.byte 60,47,'T,'A,'B,'L,'E,62,60,47,'B,'O,'D,'Y,62,60
	.byte 47,'H,'T,'M,'L,62,0
L77:
	.byte 'L,'I,'S,'T,'E,'N,0
L78:
	.byte 'S,'Y,'N,'S,'E,'N,'T,0
L79:
	.byte 'S,'Y,'N,'R,'C,'V,'D,0
L80:
	.byte 60,'F,'O,'N,'T,32,'C,'O,'L,'O,'R,61,35,'C,'C,48
	.byte 48,48,48,62,'E,'S,'T,'A,'B,'L,60,47,'F,'O,'N,'T
	.byte 62,0
L81:
	.byte 'F,'I,'N,'W,'A,'I,'T,49,0
L82:
	.byte 'F,'I,'N,'W,'A,'I,'T,50,0
L83:
	.byte 'C,'L,'O,'S,'E,'W,'A,'I,'T,0
L84:
	.byte 'C,'L,'O,'S,'I,'N,'G,0
L85:
	.byte 'L,'A,'S,'T,'A,'C,'K,0
L86:
	.byte 'T,'I,'M,'E,'W,'A,'I,'T,0
L87:
	.byte 'C,'L,'O,'S,'E,'D,0
L88:
	.byte 'U,'N,'K,'N,'O,'W,'N,0
	.area text(rom, con, rel)
	.dbfile C:\ethernut-4.9.7\nutapp_13h\httpd\httpserv.c
	.dbfunc s ShowSockets _ShowSockets fI
	.dbstruct 0 4 _NBDATA
	.dbfield 0 vp pV
	.dbfield 2 sz I
	.dbend
	.dbstruct 0 19 _NETBUF
	.dbfield 0 nb_next pS[_NETBUF]
	.dbfield 2 nb_flags c
	.dbfield 3 nb_dl S[_NBDATA]
	.dbfield 7 nb_nw S[_NBDATA]
	.dbfield 11 nb_tp S[_NBDATA]
	.dbfield 15 nb_ap S[_NBDATA]
	.dbend
	.dbstruct 0 115 tcp_socket
	.dbfield 0 so_next pS[tcp_socket]
	.dbfield 2 so_device pV
	.dbfield 4 so_devtype c
	.dbfield 5 so_devread pfI
	.dbfield 7 so_devwrite pfI
	.dbfield 9 so_devwrite_P pfI
	.dbfield 11 so_devioctl pfI
	.dbfield 13 so_devocnt i
	.dbfield 15 so_devobuf pc
	.dbfield 17 so_devobsz i
	.dbfield 19 so_state c
	.dbfield 20 so_local_addr l
	.dbfield 24 so_local_port i
	.dbfield 26 so_remote_addr l
	.dbfield 30 so_remote_port i
	.dbfield 32 so_tx_flags c
	.dbfield 33 so_tx_isn l
	.dbfield 37 so_tx_una l
	.dbfield 41 so_tx_nxt l
	.dbfield 45 so_tx_wl1 l
	.dbfield 49 so_tx_wl2 l
	.dbfield 53 so_tx_win i
	.dbfield 55 so_tx_dup c
	.dbfield 56 so_tx_nbq pS[_NETBUF]
	.dbfield 58 so_tx_tq pV
	.dbfield 60 so_rx_isn l
	.dbfield 64 so_rx_nxt l
	.dbfield 68 so_rx_win i
	.dbfield 70 so_rx_cnt I
	.dbfield 72 so_rx_bsz I
	.dbfield 74 so_rd_cnt I
	.dbfield 76 so_rx_apc C
	.dbfield 77 so_rx_buf pS[_NETBUF]
	.dbfield 79 so_rx_tq pV
	.dbfield 81 so_rx_nbq pS[_NETBUF]
	.dbfield 83 so_mss i
	.dbfield 85 so_rtt_seq l
	.dbfield 89 so_rtto i
	.dbfield 91 so_retransmits i
	.dbfield 93 so_time_wait i
	.dbfield 95 so_retran_time i
	.dbfield 97 so_last_error i
	.dbfield 99 so_pc_tq pV
	.dbfield 101 so_ac_tq pV
	.dbfield 103 so_read_to l
	.dbfield 107 so_write_to l
	.dbfield 111 so_oos_drop l
	.dbend
	.dbsym s st_unknown L88 A[8:8]kc
	.dbsym s st_closed L87 A[7:7]kc
	.dbsym s st_timewait L86 A[9:9]kc
	.dbsym s st_lastack L85 A[8:8]kc
	.dbsym s st_closing L84 A[8:8]kc
	.dbsym s st_closewait L83 A[10:10]kc
	.dbsym s st_finwait2 L82 A[9:9]kc
	.dbsym s st_finwait1 L81 A[9:9]kc
	.dbsym s st_estab L80 A[34:34]kc
	.dbsym s st_synrcvd L79 A[8:8]kc
	.dbsym s st_synsent L78 A[8:8]kc
	.dbsym s st_listen L77 A[7:7]kc
	.dbsym s foot L76 A[23:23]kc
	.dbsym s tfmt2 L75 A[19:19]kc
	.dbsym s tfmt1 L74 A[44:44]kc
	.dbsym s head L73 A[163:163]kc
;           st_P -> R22,R23
;             ts -> R20,R21
;            req -> R12,R13
;         stream -> R10,R11
	.even
_ShowSockets:
	xcall push_xgsetF0FC
	movw R12,R18
	movw R10,R16
	sbiw R28,6
	.dbline -1
	.dbline 440
; }
; 
; /*
;  * CGI Sample: Show list of sockets.
;  *
;  * This routine must have been registered by NutRegisterCgi() and is
;  * automatically called by NutHttpProcessRequest() when the client
;  * request the URL 'cgi-bin/sockets.cgi'.
;  */
; static int ShowSockets(FILE * stream, REQUEST * req)
; {
	.dbline 468
;     /* String literals are kept in flash ROM. */
;     static prog_char head[] = "<HTML><HEAD><TITLE>Sockets</TITLE></HEAD>"
;         "<BODY><H1>Sockets</H1>\r\n"
;         "<TABLE BORDER><TR><TH>Handle</TH><TH>Type</TH><TH>Local</TH><TH>Remote</TH><TH>Status</TH></TR>\r\n";
; #if defined(__AVR__)
;     static prog_char tfmt1[] = "<TR><TD>%04X</TD><TD>TCP</TD><TD>%s:%u</TD>";
; #else
;     static prog_char tfmt1[] = "<TR><TD>%08lX</TD><TD>TCP</TD><TD>%s:%u</TD>";
; #endif
;     static prog_char tfmt2[] = "<TD>%s:%u</TD><TD>";
;     static prog_char foot[] = "</TABLE></BODY></HTML>";
;     static prog_char st_listen[] = "LISTEN";
;     static prog_char st_synsent[] = "SYNSENT";
;     static prog_char st_synrcvd[] = "SYNRCVD";
;     static prog_char st_estab[] = "<FONT COLOR=#CC0000>ESTABL</FONT>";
;     static prog_char st_finwait1[] = "FINWAIT1";
;     static prog_char st_finwait2[] = "FINWAIT2";
;     static prog_char st_closewait[] = "CLOSEWAIT";
;     static prog_char st_closing[] = "CLOSING";
;     static prog_char st_lastack[] = "LASTACK";
;     static prog_char st_timewait[] = "TIMEWAIT";
;     static prog_char st_closed[] = "CLOSED";
;     static prog_char st_unknown[] = "UNKNOWN";
;     prog_char *st_P;
;     extern TCPSOCKET *tcpSocketList;
;     TCPSOCKET *ts;
; 
;     NutHttpSendHeaderTop(stream, req, 200, "Ok");
	ldi R24,<L22
	ldi R25,>L22
	std y+3,R25
	std y+2,R24
	ldi R24,200
	ldi R25,0
	std y+1,R25
	std y+0,R24
	movw R18,R12
	movw R16,R10
	xcall _NutHttpSendHeaderTop
	.dbline 469
;     NutHttpSendHeaderBottom(stream, req, html_mt, -1);
	ldi R24,255
	ldi R25,255
	ldi R26,255
	ldi R27,255
	std y+2,R24
	std y+3,R25
	std y+4,R26
	std y+5,R27
	lds R2,_html_mt
	lds R3,_html_mt+1
	std y+1,R3
	std y+0,R2
	movw R18,R12
	movw R16,R10
	xcall _NutHttpSendHeaderBottom
	.dbline 472
; 
;     /* Send HTML header. */
;     fputs_P(head, stream);
	movw R18,R10
	ldi R16,<L73
	ldi R17,>L73
	xcall _fputs_P
	.dbline 473
;     for (ts = tcpSocketList; ts; ts = ts->so_next) {
	lds R20,_tcpSocketList
	lds R21,_tcpSocketList+1
	xjmp L92
L89:
	.dbline 473
	.dbline 474
;         switch (ts->so_state) {
	movw R30,R20
	ldd R22,z+19
	clr R23
	cpi R22,0
	cpc R22,R23
	brne X31
	xjmp L106
X31:
X19:
	cpi R22,1
	ldi R30,0
	cpc R23,R30
	breq L96
X20:
	cpi R22,2
	ldi R30,0
	cpc R23,R30
	breq L97
X21:
	cpi R22,3
	ldi R30,0
	cpc R23,R30
	breq L98
X22:
	cpi R22,4
	ldi R30,0
	cpc R23,R30
	breq L99
X23:
	cpi R22,5
	ldi R30,0
	cpc R23,R30
	breq L102
X24:
	cpi R22,6
	ldi R30,0
	cpc R23,R30
	breq L100
X25:
	cpi R22,7
	ldi R30,0
	cpc R23,R30
	breq L103
X26:
	cpi R22,8
	ldi R30,0
	cpc R23,R30
	breq L104
X27:
	cpi R22,9
	ldi R30,0
	cpc R23,R30
	breq L101
X28:
	cpi R22,10
	ldi R30,0
	cpc R23,R30
	breq L105
X29:
	xjmp L93
L96:
	.dbline 476
;         case TCPS_LISTEN:
;             st_P = (prog_char *) st_listen;
	ldi R22,<L77
	ldi R23,>L77
	.dbline 477
;             break;
	xjmp L94
L97:
	.dbline 479
;         case TCPS_SYN_SENT:
;             st_P = (prog_char *) st_synsent;
	ldi R22,<L78
	ldi R23,>L78
	.dbline 480
;             break;
	xjmp L94
L98:
	.dbline 482
;         case TCPS_SYN_RECEIVED:
;             st_P = (prog_char *) st_synrcvd;
	ldi R22,<L79
	ldi R23,>L79
	.dbline 483
;             break;
	xjmp L94
L99:
	.dbline 485
;         case TCPS_ESTABLISHED:
;             st_P = (prog_char *) st_estab;
	ldi R22,<L80
	ldi R23,>L80
	.dbline 486
;             break;
	xjmp L94
L100:
	.dbline 488
;         case TCPS_FIN_WAIT_1:
;             st_P = (prog_char *) st_finwait1;
	ldi R22,<L81
	ldi R23,>L81
	.dbline 489
;             break;
	xjmp L94
L101:
	.dbline 491
;         case TCPS_FIN_WAIT_2:
;             st_P = (prog_char *) st_finwait2;
	ldi R22,<L82
	ldi R23,>L82
	.dbline 492
;             break;
	xjmp L94
L102:
	.dbline 494
;         case TCPS_CLOSE_WAIT:
;             st_P = (prog_char *) st_closewait;
	ldi R22,<L83
	ldi R23,>L83
	.dbline 495
;             break;
	xjmp L94
L103:
	.dbline 497
;         case TCPS_CLOSING:
;             st_P = (prog_char *) st_closing;
	ldi R22,<L84
	ldi R23,>L84
	.dbline 498
;             break;
	xjmp L94
L104:
	.dbline 500
;         case TCPS_LAST_ACK:
;             st_P = (prog_char *) st_lastack;
	ldi R22,<L85
	ldi R23,>L85
	.dbline 501
;             break;
	xjmp L94
L105:
	.dbline 503
;         case TCPS_TIME_WAIT:
;             st_P = (prog_char *) st_timewait;
	ldi R22,<L86
	ldi R23,>L86
	.dbline 504
;             break;
	xjmp L94
L106:
	.dbline 506
;         case TCPS_CLOSED:
;             st_P = (prog_char *) st_closed;
	ldi R22,<L87
	ldi R23,>L87
	.dbline 507
;             break;
	xjmp L94
L93:
	.dbline 509
;         default:
;             st_P = (prog_char *) st_unknown;
	ldi R22,<L88
	ldi R23,>L88
	.dbline 510
;             break;
L94:
	.dbline 515
;         }
;         /*
;          * Fixed a bug reported by Zhao Weigang.
;          */
;         fprintf_P(stream, tfmt1, (uptr_t) ts, inet_ntoa(ts->so_local_addr), ntohs(ts->so_local_port));
	movw R30,R20
	ldd R16,z+20
	ldd R17,z+21
	ldd R18,z+22
	ldd R19,z+23
	xcall _inet_ntoa
	movw R30,R20
	ldd R4,z+24
	ldd R5,z+25
	movw R24,R4
	andi R24,0
	movw R2,R24
	mov R2,R3
	clr R3
	movw R24,R4
	andi R25,0
	mov R25,R24
	clr R24
	or R24,R2
	or R25,R3
	std y+5,R25
	std y+4,R24
	std y+3,R17
	std y+2,R16
	std y+1,R21
	std y+0,R20
	ldi R18,<L74
	ldi R19,>L74
	movw R16,R10
	xcall _fprintf_P
	.dbline 516
;         fprintf_P(stream, tfmt2, inet_ntoa(ts->so_remote_addr), ntohs(ts->so_remote_port));
	movw R30,R20
	ldd R16,z+26
	ldd R17,z+27
	ldd R18,z+28
	ldd R19,z+29
	xcall _inet_ntoa
	movw R12,R16
	movw R30,R20
	ldd R14,z+30
	ldd R15,z+31
	movw R24,R14
	andi R24,0
	movw R2,R24
	mov R2,R3
	clr R3
	movw R24,R14
	andi R25,0
	mov R25,R24
	clr R24
	or R24,R2
	or R25,R3
	std y+3,R25
	std y+2,R24
	std y+1,R13
	std y+0,R12
	ldi R18,<L75
	ldi R19,>L75
	movw R16,R10
	xcall _fprintf_P
	.dbline 517
;         fputs_P(st_P, stream);
	movw R18,R10
	movw R16,R22
	xcall _fputs_P
	.dbline 518
;         fputs("</TD></TR>\r\n", stream);
	movw R18,R10
	ldi R16,<L107
	ldi R17,>L107
	xcall _fputs
	.dbline 519
;         fflush(stream);
	movw R16,R10
	xcall _fflush
	.dbline 520
;     }
L90:
	.dbline 473
	movw R30,R20
	ldd R20,z+0
	ldd R21,z+1
L92:
	.dbline 473
	cpi R20,0
	cpc R20,R21
	breq X32
	xjmp L89
X32:
X30:
	.dbline 522
; 
;     fputs_P(foot, stream);
	movw R18,R10
	ldi R16,<L76
	ldi R17,>L76
	xcall _fputs_P
	.dbline 523

⌨️ 快捷键说明

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