📄 cmdproc.ls1
字号:
191 ; #define CMD_TBL_LEN (sizeof (cmd_tbl) / sizeof (cmd_tbl [0]))
192 ;
193 ; static unsigned char cmdid_search (char *cmdstr) {
194
---- 195 RSEG ?PR?_cmdid_search?CMDPROC
0000 196 _cmdid_search:
197 USING 0
198 ; SOURCE LINE # 41
0000 8B00 F 199 MOV cmdstr?040,R3
0002 8A00 F 200 MOV cmdstr?040+01H,R2
0004 8900 F 201 MOV cmdstr?040+02H,R1
202 ; struct cmd_st *ctp;
203 ; for (ctp = cmd_tbl; ctp < &cmd_tbl [CMD_TBL_LEN]; ctp++) {
204 ; SOURCE LINE # 43
0006 7500FE F 205 MOV ctp?041,#0FEH
A51 MACRO ASSEMBLER CMDPROC 04/01/2006 14:08:06 PAGE 5
0009 750000 F 206 MOV ctp?041+01H,#HIGH (cmd_tbl)
000C 750000 F 207 MOV ctp?041+02H,#LOW (cmd_tbl)
000F 208 ?C0001:
000F C3 209 CLR C
0010 900000 F 210 MOV DPTR,#cmd_tbl+018H
0013 E500 F 211 MOV A,ctp?041+02H
0015 9582 212 SUBB A,DPL
0017 E500 F 213 MOV A,ctp?041+01H
0019 9583 214 SUBB A,DPH
001B 215 ?C0028:
001B 5036 216 JNC ?C0002
217 ; if (strcmp (ctp->cmdstr, cmdstr) == 0)
218 ; SOURCE LINE # 44
001D AB00 F 219 MOV R3,ctp?041
001F AA00 F 220 MOV R2,ctp?041+01H
0021 A900 F 221 MOV R1,ctp?041+02H
0023 120000 F 222 LCALL ?C?PLDPTR
0026 A801 223 MOV R0,AR1
0028 AC02 224 MOV R4,AR2
002A AD03 225 MOV R5,AR3
002C AB00 F 226 MOV R3,cmdstr?040
002E AA00 F 227 MOV R2,cmdstr?040+01H
0030 A900 F 228 MOV R1,cmdstr?040+02H
0032 120000 F 229 LCALL ?C?STRCMP
0035 EF 230 MOV A,R7
0036 700E 231 JNZ ?C0003
232 ; return (ctp->id);
233 ; SOURCE LINE # 45
0038 AB00 F 234 MOV R3,ctp?041
003A AA00 F 235 MOV R2,ctp?041+01H
003C A900 F 236 MOV R1,ctp?041+02H
003E 900003 237 MOV DPTR,#03H
0041 120000 F 238 LCALL ?C?CLDOPTR
0044 FF 239 MOV R7,A
0045 22 240 RET
241 ; }
242 ; SOURCE LINE # 46
0046 243 ?C0003:
0046 7404 244 MOV A,#04H
0048 2500 F 245 ADD A,ctp?041+02H
004A F500 F 246 MOV ctp?041+02H,A
004C E4 247 CLR A
004D 3500 F 248 ADDC A,ctp?041+01H
004F F500 F 249 MOV ctp?041+01H,A
0051 80BC 250 SJMP ?C0001
0053 251 ?C0002:
252 ; return (CID_LAST);
253 ; SOURCE LINE # 47
0053 7F06 254 MOV R7,#06H
255 ; }
256 ; SOURCE LINE # 48
0055 257 ?C0005:
0055 22 258 RET
259 ; END OF _cmdid_search
260
261 ;
262 ; char *strupr ( char *src ) {
263
---- 264 RSEG ?PR?_strupr?CMDPROC
0000 265 _strupr:
266 USING 0
267 ; SOURCE LINE # 50
0000 8B00 F 268 MOV src?142,R3
0002 8A00 F 269 MOV src?142+01H,R2
0004 8900 F 270 MOV src?142+02H,R1
271 ; char *s;
A51 MACRO ASSEMBLER CMDPROC 04/01/2006 14:08:06 PAGE 6
272 ; for (s = src; *s != '\0'; s++)
273 ; SOURCE LINE # 52
0006 8B00 F 274 MOV s?143,R3
0008 8A00 F 275 MOV s?143+01H,R2
000A 8900 F 276 MOV s?143+02H,R1
000C 277 ?C0006:
000C AB00 F 278 MOV R3,s?143
000E AA00 F 279 MOV R2,s?143+01H
0010 A900 F 280 MOV R1,s?143+02H
0012 120000 F 281 LCALL ?C?CLDPTR
0015 FF 282 MOV R7,A
0016 601A 283 JZ ?C0007
284 ; *s = toupper (*s);
285 ; SOURCE LINE # 53
0018 120000 F 286 LCALL _toupper
001B AB00 F 287 MOV R3,s?143
001D AA00 F 288 MOV R2,s?143+01H
001F A900 F 289 MOV R1,s?143+02H
0021 EF 290 MOV A,R7
0022 120000 F 291 LCALL ?C?CSTPTR
0025 7401 292 MOV A,#01H
0027 2500 F 293 ADD A,s?143+02H
0029 F500 F 294 MOV s?143+02H,A
002B E4 295 CLR A
002C 3500 F 296 ADDC A,s?143+01H
002E F500 F 297 MOV s?143+01H,A
0030 80DA 298 SJMP ?C0006
0032 299 ?C0007:
300 ; return (src);
301 ; SOURCE LINE # 54
0032 AB00 F 302 MOV R3,src?142
0034 AA00 F 303 MOV R2,src?142+01H
0036 A900 F 304 MOV R1,src?142+02H
305 ; }
306 ; SOURCE LINE # 55
0038 307 ?C0009:
0038 22 308 RET
309 ; END OF _strupr
310
311 ;
312 ; /* 命令处理 */
313 ; void cmd_proc (const char *cmd) {
314
---- 315 RSEG ?PR?_cmd_proc?CMDPROC
0000 316 _cmd_proc:
317 USING 0
318 ; SOURCE LINE # 58
0000 8B00 F 319 MOV cmd?244,R3
0002 8A00 F 320 MOV cmd?244+01H,R2
0004 8900 F 321 MOV cmd?244+02H,R1
322 ; xdata char cmdstr_buf [1 + MAX_CMD_LEN];
323 ; xdata char argstr_buf [1 + MAX_CMD_LEN];
324 ; char *argsep;
325 ; unsigned char id;
326 ;
327 ; strncpy (cmdstr_buf, cmd, sizeof (cmdstr_buf) - 1);
328 ; SOURCE LINE # 64
0006 8B00 F 329 MOV ?_strncpy?BYTE+03H,R3
0008 8A00 F 330 MOV ?_strncpy?BYTE+04H,R2
000A 8900 F 331 MOV ?_strncpy?BYTE+05H,R1
000C 750000 F 332 MOV ?_strncpy?BYTE+06H,#00H
000F 750028 F 333 MOV ?_strncpy?BYTE+07H,#028H
0012 7B01 334 MOV R3,#01H
0014 7A00 F 335 MOV R2,#HIGH (cmdstr_buf?246)
0016 7900 F 336 MOV R1,#LOW (cmdstr_buf?246)
0018 120000 F 337 LCALL _strncpy
A51 MACRO ASSEMBLER CMDPROC 04/01/2006 14:08:06 PAGE 7
338 ; cmdstr_buf [sizeof (cmdstr_buf) - 1] = '\0';
339 ; SOURCE LINE # 65
001B E4 340 CLR A
001C 900000 F 341 MOV DPTR,#cmdstr_buf?246+028H
001F F0 342 MOVX @DPTR,A
343 ; strupr (cmdstr_buf);
344 ; SOURCE LINE # 66
0020 7B01 345 MOV R3,#01H
0022 7A00 F 346 MOV R2,#HIGH (cmdstr_buf?246)
0024 7900 F 347 MOV R1,#LOW (cmdstr_buf?246)
0026 120000 F 348 LCALL _strupr
349 ; argsep = strchr (cmdstr_buf, ' ');
350 ; SOURCE LINE # 67
0029 7B01 351 MOV R3,#01H
002B 7A00 F 352 MOV R2,#HIGH (cmdstr_buf?246)
002D 7900 F 353 MOV R1,#LOW (cmdstr_buf?246)
002F 7D20 354 MOV R5,#020H
0031 120000 F 355 LCALL _strchr
0034 8B00 F 356 MOV argsep?248,R3
0036 8A00 F 357 MOV argsep?248+01H,R2
0038 8900 F 358 MOV argsep?248+02H,R1
359 ; if (argsep == NULL) {
360 ; SOURCE LINE # 68
003A E9 361 MOV A,R1
003B 4A 362 ORL A,R2
003C 4B 363 ORL A,R3
003D 7006 364 JNZ ?C0010
365 ; argstr_buf [0] = '\0';
366 ; SOURCE LINE # 69
003F 900000 F 367 MOV DPTR,#argstr_buf?247
0042 F0 368 MOVX @DPTR,A
369 ; }
370 ; SOURCE LINE # 70
0043 801E 371 SJMP ?C0011
0045 372 ?C0010:
373 ; else {
374 ; SOURCE LINE # 71
375 ; strcpy (argstr_buf, argsep + 1);
376 ; SOURCE LINE # 72
0045 AB00 F 377 MOV R3,argsep?248
0047 E500 F 378 MOV A,argsep?248+02H
0049 2401 379 ADD A,#01H
004B F9 380 MOV R1,A
004C E4 381 CLR A
004D 3500 F 382 ADDC A,argsep?248+01H
004F FA 383 MOV R2,A
0050 7800 F 384 MOV R0,#LOW (argstr_buf?247)
0052 7C00 F 385 MOV R4,#HIGH (argstr_buf?247)
0054 7D01 386 MOV R5,#01H
0056 120000 F 387 LCALL ?C?STRCPY
388 ; *argsep = '\0';
389 ; SOURCE LINE # 73
0059 AB00 F 390 MOV R3,argsep?248
005B AA00 F 391 MOV R2,argsep?248+01H
005D A900 F 392 MOV R1,argsep?248+02H
005F E4 393 CLR A
0060 120000 F 394 LCALL ?C?CSTPTR
395 ; }
396 ; SOURCE LINE # 74
0063 397 ?C0011:
398 ; id = cmdid_search (cmdstr_buf);
399 ; SOURCE LINE # 75
0063 7B01 400 MOV R3,#01H
0065 7A00 F 401 MOV R2,#HIGH (cmdstr_buf?246)
0067 7900 F 402 MOV R1,#LOW (cmdstr_buf?246)
0069 120000 F 403 LCALL _cmdid_search
A51 MACRO ASSEMBLER CMDPROC 04/01/2006 14:08:06 PAGE 8
404 ;---- Variable 'id?249' assigned to Register 'R7' ----
405 ; switch (id) {
406 ; SOURCE LINE # 76
006C EF 407 MOV A,R7
006D B40700 408 CJNE A,#07H,?C0030
0070 409 ?C0030:
0070 4002 410 JC $ + 4H
0072 0100 F 411 AJMP ?C0027
0074 900000 F 412 MOV DPTR,#?C0031
0077 25E0 413 ADD A,ACC
0079 73 414 JMP @A+DPTR
007A 415 ?C0031:
007A 0100 F 416 AJMP ?C0013
007C 0100 F 417 AJMP ?C0016
007E 0100 F 418 AJMP ?C0017
0080 0100 F 419 AJMP ?C0022
0082 0100 F 420 AJMP ?C0024
0084 0100 F 421 AJMP ?C0025
0086 0100 F 422 AJMP ?_cmd_proc?CMDERR
423 ; unsigned long tm;
424 ; case CID_SET_CLK:
425 ; SOURCE LINE # 78
0088 426 ?C0013:
427 ; if (strtotm (&tm, argstr_buf) != 0)
428 ; SOURCE LINE # 79
0088 750001 F 429 MOV ?_strtotm?BYTE+03H,#01H
008B 750000 F 430 MOV ?_strtotm?BYTE+04H,#HIGH (argstr_buf?247)
008E 750000 F 431 MOV ?_strtotm?BYTE+05H,#LOW (argstr_buf?247)
0091 7B00 432 MOV R3,#00H
0093 7A00 F 433 MOV R2,#HIGH (tm?245)
0095 7900 F 434 MOV R1,#LOW (tm?245)
0097 120000 F 435 LCALL _strtotm
009A EF 436 MOV A,R7
009B 6002 437 JZ $ + 4H
009D 0100 F 438 AJMP ?_cmd_proc?CMDERR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -