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

📄 httpserv.lis

📁 单片机C语言程序设计实训100例--基于AVR+PROTEUS仿真
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0008           ; /**************************************************************/
 0008           ; 
 0008           ; 
 0008           ; static int ASPCallback (char *pASPFunction, FILE *stream)
 0008           ; {
 0008                   .dbline 264
 0008           ;     if (strcmp(pASPFunction, "usr_date") == 0) {
 0008 20E0              ldi R18,<L6
 000A 30E0              ldi R19,>L6
 000C 8601              movw R16,R12
 000E 0E940000          xcall _strcmp
 0012 0030              cpi R16,0
 0014 0107              cpc R16,R17
 0016 41F4              brne L4
 0018           X0:
 0018                   .dbline 264
 0018                   .dbline 265
 0018           ;         fprintf(stream, "Dummy example: 01.01.2005");
 0018 20E0              ldi R18,<L7
 001A 30E0              ldi R19,>L7
 001C 8501              movw R16,R10
 001E 0E940000          xcall _fprintf
 0022                   .dbline 266
 0022           ;         return(0);
 0022 0027              clr R16
 0024 1127              clr R17
 0026 12C0              xjmp L3
 0028           L4:
 0028                   .dbline 269
 0028           ;     }
 0028           ; 
 0028           ;     if (strcmp(pASPFunction, "usr_time") == 0) {
 0028 20E0              ldi R18,<L10
 002A 30E0              ldi R19,>L10
 002C 8601              movw R16,R12
 002E 0E940000          xcall _strcmp
 0032 0030              cpi R16,0
 0034 0107              cpc R16,R17
 0036 41F4              brne L8
 0038           X1:
 0038                   .dbline 269
 0038                   .dbline 270
 0038           ;         fprintf(stream, "Dummy example: 12:15:02");
 0038 20E0              ldi R18,<L11
 003A 30E0              ldi R19,>L11
 003C 8501              movw R16,R10
 003E 0E940000          xcall _fprintf
 0042                   .dbline 271
 0042           ;         return(0);
 0042 0027              clr R16
 0044 1127              clr R17
 0046 02C0              xjmp L3
 0048           L8:
 0048                   .dbline 274
 0048           ;     }
 0048           ; 
 0048           ;     return (-1);
 0048 0FEF              ldi R16,-1
 004A 1FEF              ldi R17,-1
 004C                   .dbline -2
 004C           L3:
 004C                   .dbline 0 ; func end
 004C 0C940000          xjmp pop_xgset003C
 0050                   .dbsym r stream 10 pS[__iobuf]
 0050                   .dbsym r pASPFunction 12 pc
 0050                   .dbend
                        .area lit(rom, con, rel)
 0000           L13:
 0000 3C48544D4C3E3C484541443E3C544954  .byte 60,'H,'T,'M,'L,62,60,'H,'E,'A,'D,62,60,'T,'I,'T
 0010 4C453E506172616D65746572733C2F54  .byte 'L,'E,62,'P,'a,'r,'a,'m,'e,'t,'e,'r,'s,60,47,'T
 0020 49544C453E3C2F484541443E3C424F44  .byte 'I,'T,'L,'E,62,60,47,'H,'E,'A,'D,62,60,'B,'O,'D
 0030 593E3C48313E506172616D6574657273  .byte 'Y,62,60,'H,49,62,'P,'a,'r,'a,'m,'e,'t,'e,'r,'s
 0040 3C2F48313E00      .byte 60,47,'H,49,62,0
 0046           L14:
 0046 3C2F424F44593E3C2F48544D4C3E00    .byte 60,47,'B,'O,'D,'Y,62,60,47,'H,'T,'M,'L,62,0
 0055           L15:
 0055 4D6574686F643A2025733C42523E0D0A  .byte 'M,'e,'t,'h,'o,'d,58,32,37,'s,60,'B,'R,62,13,10
 0065 56657273696F6E3A20485454502F2564  .byte 'V,'e,'r,'s,'i,'o,'n,58,32,'H,'T,'T,'P,47,37,'d
 0075 2E25643C42523E0D0A436F6E74656E74  .byte 46,37,'d,60,'B,'R,62,13,10,'C,'o,'n,'t,'e,'n,'t
 0085 206C656E6774683A20256C643C42523E  .byte 32,'l,'e,'n,'g,'t,'h,58,32,37,'l,'d,60,'B,'R,62
 0095 0D0A00            .byte 13,10,0
 0098           L16:
 0098 55524C3A2025733C42523E0D0A00      .byte 'U,'R,'L,58,32,37,'s,60,'B,'R,62,13,10,0
 00A6           L17:
 00A6 417267756D656E743A2025733C42523E  .byte 'A,'r,'g,'u,'m,'e,'n,'t,58,32,37,'s,60,'B,'R,62
 00B6 0D0A00            .byte 13,10,0
 00B9           L18:
 00B9 436F6E74656E7420747970653A202573  .byte 'C,'o,'n,'t,'e,'n,'t,32,'t,'y,'p,'e,58,32,37,'s
 00C9 3C42523E0D0A00    .byte 60,'B,'R,62,13,10,0
 00D0           L19:
 00D0 436F6F6B69653A2025733C42523E0D0A  .byte 'C,'o,'o,'k,'i,'e,58,32,37,'s,60,'B,'R,62,13,10
 00E0 00                .byte 0
 00E1           L20:
 00E1 4175746820696E666F3A2025733C4252  .byte 'A,'u,'t,'h,32,'i,'n,'f,'o,58,32,37,'s,60,'B,'R
 00F1 3E0D0A00          .byte 62,13,10,0
 00F5           L21:
 00F5 55736572206167656E743A2025733C42  .byte 'U,'s,'e,'r,32,'a,'g,'e,'n,'t,58,32,37,'s,60,'B
 0105 523E0D0A00        .byte 'R,62,13,10,0
                        .area text(rom, con, rel)
 0050                   .dbfile C:\ethernut-4.9.7\nutapp_13h\httpd\httpserv.c
 0050                   .dbfunc s ShowQuery _ShowQuery fI
 0050                   .dbstruct 0 34 _REQUEST
 0050                   .dbfield 0 req_method I
 0050                   .dbfield 2 req_version I
 0050                   .dbfield 4 req_length L
 0050                   .dbfield 8 req_url pc
 0050                   .dbfield 10 req_query pc
 0050                   .dbfield 12 req_type pc
 0050                   .dbfield 14 req_cookie pc
 0050                   .dbfield 16 req_auth pc
 0050                   .dbfield 18 req_agent pc
 0050                   .dbfield 20 req_qptrs ppc
 0050                   .dbfield 22 req_numqptrs I
 0050                   .dbfield 24 req_ims L
 0050                   .dbfield 28 req_referer pc
 0050                   .dbfield 30 req_host pc
 0050                   .dbfield 32 req_connection I
 0050                   .dbend
 0050                   .dbsym s agent_fmt L21 A[21:21]kc
 0050                   .dbsym s auth_fmt L20 A[20:20]kc
 0050                   .dbsym s cookie_fmt L19 A[17:17]kc
 0050                   .dbsym s type_fmt L18 A[23:23]kc
 0050                   .dbsym s query_fmt L17 A[19:19]kc
 0050                   .dbsym s url_fmt L16 A[14:14]kc
 0050                   .dbsym s req_fmt L15 A[67:67]kc
 0050                   .dbsym s foot L14 A[15:15]kc
 0050                   .dbsym s head L13 A[70:70]kc
 0050           ;             cp -> R22,R23
 0050           ;            req -> R20,R21
 0050           ;         stream -> R10,R11
                        .even
 0050           _ShowQuery:
 0050 0E940000          xcall push_xgsetF00C
 0054 A901              movw R20,R18
 0056 5801              movw R10,R16
 0058 2A97              sbiw R28,10
 005A                   .dbline -1
 005A                   .dbline 287
 005A           ; }
 005A           ; 
 005A           ; /*
 005A           ;  * CGI Sample: Show request parameters.
 005A           ;  *
 005A           ;  * See httpd.h for REQUEST structure.
 005A           ;  *
 005A           ;  * This routine must have been registered by NutRegisterCgi() and is
 005A           ;  * automatically called by NutHttpProcessRequest() when the client
 005A           ;  * request the URL 'cgi-bin/test.cgi'.
 005A           ;  */
 005A           ; static int ShowQuery(FILE * stream, REQUEST * req)
 005A           ; {
 005A                   .dbline 306
 005A           ;     char *cp;
 005A           ;     /*
 005A           ;      * This may look a little bit weird if you are not used to C programming
 005A           ;      * for flash microcontrollers. The special type 'prog_char' forces the
 005A           ;      * string literals to be placed in flash ROM. This saves us a lot of
 005A           ;      * precious RAM.
 005A           ;      */
 005A           ;     static prog_char head[] = "<HTML><HEAD><TITLE>Parameters</TITLE></HEAD><BODY><H1>Parameters</H1>";
 005A           ;     static prog_char foot[] = "</BODY></HTML>";
 005A           ;     static prog_char req_fmt[] = "Method: %s<BR>\r\nVersion: HTTP/%d.%d<BR>\r\nContent length: %ld<BR>\r\n";
 005A           ;     static prog_char url_fmt[] = "URL: %s<BR>\r\n";
 005A           ;     static prog_char query_fmt[] = "Argument: %s<BR>\r\n";
 005A           ;     static prog_char type_fmt[] = "Content type: %s<BR>\r\n";
 005A           ;     static prog_char cookie_fmt[] = "Cookie: %s<BR>\r\n";
 005A           ;     static prog_char auth_fmt[] = "Auth info: %s<BR>\r\n";
 005A           ;     static prog_char agent_fmt[] = "User agent: %s<BR>\r\n";
 005A           ; 
 005A           ;     /* These useful API calls create a HTTP response for us. */
 005A           ;     NutHttpSendHeaderTop(stream, req, 200, "Ok");
 005A 80E0              ldi R24,<L22
 005C 90E0              ldi R25,>L22
 005E 9B83              std y+3,R25
 0060 8A83              std y+2,R24
 0062 88EC              ldi R24,200
 0064 90E0              ldi R25,0
 0066 9983              std y+1,R25
 0068 8883              std y+0,R24
 006A 9A01              movw R18,R20
 006C 8501              movw R16,R10
 006E 0E940000          xcall _NutHttpSendHeaderTop
 0072                   .dbline 307
 0072           ;     NutHttpSendHeaderBottom(stream, req, html_mt, -1);
 0072 8FEF              ldi R24,255
 0074 9FEF              ldi R25,255
 0076 AFEF              ldi R26,255
 0078 BFEF              ldi R27,255
 007A 8A83              std y+2,R24
 007C 9B83              std y+3,R25
 007E AC83              std y+4,R26
 0080 BD83              std y+5,R27
 0082 20900000          lds R2,_html_mt
 0086 30900100          lds R3,_html_mt+1
 008A 3982              std y+1,R3
 008C 2882              std y+0,R2
 008E 9A01              movw R18,R20
 0090 8501              movw R16,R10
 0092 0E940000          xcall _NutHttpSendHeaderBottom
 0096                   .dbline 310
 0096           ; 
 0096           ;     /* Send HTML header. */
 0096           ;     fputs_P(head, stream);
 0096 9501              movw R18,R10
 0098 00E0              ldi R16,<L13
 009A 10E0              ldi R17,>L13
 009C 0E940000          xcall _fputs_P
 00A0                   .dbline 315
 00A0           ; 
 00A0           ;     /*
 00A0           ;      * Send request parameters.
 00A0           ;      */
 00A0           ;     switch (req->req_method) {
 00A0 FA01              movw R30,R20
 00A2 6081              ldd R22,z+0
 00A4 7181              ldd R23,z+1
 00A6 6130              cpi R22,1
 00A8 E0E0              ldi R30,0
 00AA 7E07              cpc R23,R30
 00AC 49F0              breq L26
 00AE           X2:
 00AE 6230              cpi R22,2
 00B0 E0E0              ldi R30,0
 00B2 7E07              cpc R23,R30
 00B4 41F0              breq L28
 00B6           X3:
 00B6 6330              cpi R22,3
 00B8 E0E0              ldi R30,0
 00BA 7E07              cpc R23,R30
 00BC 39F0              breq L30
 00BE           X4:
 00BE 09C0              xjmp L23
 00C0           L26:
 00C0                   .dbline 317
 00C0           ;     case METHOD_GET:
 00C0           ;         cp = "GET";
 00C0 60E0              ldi R22,<L27
 00C2 70E0              ldi R23,>L27
 00C4                   .dbline 318
 00C4           ;         break;
 00C4 08C0              xjmp L24
 00C6           L28:
 00C6                   .dbline 320
 00C6           ;     case METHOD_POST:
 00C6           ;         cp = "POST";
 00C6 60E0              ldi R22,<L29
 00C8 70E0              ldi R23,>L29
 00CA                   .dbline 321
 00CA           ;         break;
 00CA 05C0              xjmp L24
 00CC           L30:
 00CC                   .dbline 323
 00CC           ;     case METHOD_HEAD:
 00CC           ;         cp = "HEAD";
 00CC 60E0              ldi R22,<L31
 00CE 70E0              ldi R23,>L31
 00D0                   .dbline 324
 00D0           ;         break;
 00D0 02C0              xjmp L24
 00D2           L23:
 00D2                   .dbline 326
 00D2           ;     default:
 00D2           ;         cp = "UNKNOWN";
 00D2 60E0              ldi R22,<L32
 00D4 70E0              ldi R23,>L32
 00D6                   .dbline 327
 00D6           ;         break;
 00D6           L24:
 00D6                   .dbline 329
 00D6           ;     }
 00D6           ;     fprintf_P(stream, req_fmt, cp, req->req_version / 10, req->req_version % 10, req->req_length);
 00D6 FA01              movw R30,R20
 00D8 2480              ldd R2,z+4
 00DA 3580              ldd R3,z+5
 00DC 4680              ldd R4,z+6
 00DE 5780              ldd R5,z+7
 00E0 2E82              std y+6,R2
 00E2 3F82              std y+7,R3
 00E4 4886              std y+8,R4
 00E6 5986              std y+9,R5
 00E8 2280              ldd R2,z+2
 00EA 3380              ldd R3,z+3
 00EC 2AE0              ldi R18,10
 00EE 30E0              ldi R19,0

⌨️ 快捷键说明

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