📄 shell.lis
字号:
02D6 F001 movw R30,R0
02D8 80E0 ldi R24,<_InnerCmd
02DA 90E0 ldi R25,>_InnerCmd
02DC E80F add R30,R24
02DE F91F adc R31,R25
02E0 0081 ldd R16,z+0
02E2 1181 ldd R17,z+1
02E4 00D0 rcall _strcmp
02E6 0030 cpi R16,0
02E8 0107 cpc R16,R17
02EA 11F4 brne L88
02EC X23:
02EC .dbline 177
02EC 0A2D mov R16,R10
02EE 0FC0 rjmp L84
02F0 L88:
02F0 .dbline 178
02F0 ; i++;
02F0 A394 inc R10
02F2 .dbline 179
02F2 ; }
02F2 L86:
02F2 .dbline 176
02F2 86E0 ldi R24,6
02F4 8A9D mul R24,R10
02F6 F001 movw R30,R0
02F8 80E0 ldi R24,<_InnerCmd
02FA 90E0 ldi R25,>_InnerCmd
02FC E80F add R30,R24
02FE F91F adc R31,R25
0300 2080 ldd R2,z+0
0302 3180 ldd R3,z+1
0304 2220 tst R2
0306 21F7 brne L85
0308 3320 tst R3
030A 11F7 brne L85
030C X24:
030C .dbline 180
030C ; return -1;
030C 0FEF ldi R16,255
030E .dbline -2
030E L84:
030E .dbline 0 ; func end
030E 00C0 rjmp pop_xgset003C
0310 .dbsym r i 10 c
0310 .dbsym r cmd 12 pc
0310 .dbend
0310 .dbfunc e ParseCmd _ParseCmd fV
0310 ; argv -> y+3
0310 ; argc -> y+2
0310 ; Cmd_Index -> R20
0310 ; cmdline -> R10,R11
.even
0310 _ParseCmd::
0310 00D0 rcall push_xgset300C
0312 5801 movw R10,R16
0314 2D97 sbiw R28,13
0316 .dbline -1
0316 .dbline 183
0316 ; }
0316 ; void ParseCmd(char *cmdline)
0316 ; {
0316 .dbline 186
0316 ; signed char argc,Cmd_Index;
0316 ; char *argv[5];
0316 ; ParseArgs(cmdline,&argc,argv);
0316 CE01 movw R24,R28
0318 0396 adiw R24,3
031A 9983 std y+1,R25
031C 8883 std y+0,R24
031E 9E01 movw R18,R28
0320 2E5F subi R18,254 ; offset = 2
0322 3F4F sbci R19,255
0324 8501 movw R16,R10
0326 8FDF rcall _ParseArgs
0328 .dbline 187
0328 ; if (argc==0) return;
0328 2A80 ldd R2,y+2
032A 2220 tst R2
032C 09F4 brne L91
032E X25:
032E .dbline 187
032E 2CC0 rjmp L90
0330 L91:
0330 .dbline 188
0330 ; Cmd_Index=GetCmdMatch(argv[0]);
0330 0B81 ldd R16,y+3
0332 1C81 ldd R17,y+4
0334 C9DF rcall _GetCmdMatch
0336 402F mov R20,R16
0338 .dbline 189
0338 ; if (Cmd_Index<0){
0338 0030 cpi R16,0
033A 24F4 brge L93
033C X26:
033C .dbline 189
033C .dbline 190
033C ; serial_send("unknow command\n");
033C 00E0 ldi R16,<L95
033E 10E0 ldi R17,>L95
0340 00D0 rcall _serial_send
0342 .dbline 191
0342 ; return;
0342 22C0 rjmp L90
0344 L93:
0344 .dbline 193
0344 ; }
0344 ; if (InnerCmd[Cmd_Index].proc)
0344 06E0 ldi R16,6
0346 142F mov R17,R20
0348 0102 muls R16,R17
034A F001 movw R30,R0
034C 80E0 ldi R24,<_InnerCmd+4
034E 90E0 ldi R25,>_InnerCmd+4
0350 E80F add R30,R24
0352 F91F adc R31,R25
0354 2080 ldd R2,z+0
0356 3180 ldd R3,z+1
0358 2220 tst R2
035A 11F4 brne X27
035C 3320 tst R3
035E A1F0 breq L96
0360 X27:
0360 .dbline 194
0360 ; InnerCmd[Cmd_Index].proc(argc,argv);
0360 9E01 movw R18,R28
0362 2D5F subi R18,253 ; offset = 3
0364 3F4F sbci R19,255
0366 0A81 ldd R16,y+2
0368 86E0 ldi R24,6
036A 0F93 push R16
036C 1F93 push R17
036E 082F mov R16,R24
0370 0102 muls R16,R17
0372 F001 movw R30,R0
0374 1F91 pop R17
0376 0F91 pop R16
0378 80E0 ldi R24,<_InnerCmd+4
037A 90E0 ldi R25,>_InnerCmd+4
037C E80F add R30,R24
037E F91F adc R31,R25
0380 A081 ldd R26,z+0
0382 B181 ldd R27,z+1
0384 FD01 movw R30,R26
0386 00D0 rcall xicall
0388 L96:
0388 .dbline -2
0388 L90:
0388 .dbline 0 ; func end
0388 2D96 adiw R28,13
038A 00C0 rjmp pop_xgset300C
038C .dbsym l argv 3 A[10:5]pc
038C .dbsym l argc 2 C
038C .dbsym r Cmd_Index 20 C
038C .dbsym r cmdline 10 pc
038C .dbend
038C .dbfunc e shellin _shellin fV
038C ; buf -> y+0
.even
038C _shellin::
038C E397 sbiw R28,51
038E .dbline -1
038E .dbline 197
038E ; }
038E ; void shellin(void)
038E ; {
038E .dbline 199
038E ; char buf[51];
038E ; if (serial_recv(buf,50)>0){
038E 22E3 ldi R18,50
0390 30E0 ldi R19,0
0392 8E01 movw R16,R28
0394 00D0 rcall _serial_recv
0396 0030 cpi R16,0
0398 0107 cpc R16,R17
039A 11F0 breq L101
039C X28:
039C .dbline 199
039C .dbline 200
039C ; ParseCmd(buf);
039C 8E01 movw R16,R28
039E B8DF rcall _ParseCmd
03A0 .dbline 201
03A0 ; };
03A0 L101:
03A0 .dbline 201
03A0 .dbline -2
03A0 L100:
03A0 .dbline 0 ; func end
03A0 E396 adiw R28,51
03A2 0895 ret
03A4 .dbsym l buf 0 A[51:51]c
03A4 .dbend
.area data(ram, con, rel)
002A .dbfile E:\Shuaihu\AVR\8880\shell.c
002A L95:
002A .blkb 16
.area idata
002A 756E6B6E6F7720636F6D6D616E640A00 .byte 'u,'n,'k,'n,'o,'w,32,'c,'o,'m,'m,'a,'n,'d,10,0
.area data(ram, con, rel)
003A .dbfile E:\Shuaihu\AVR\8880\shell.c
003A L65:
003A .blkb 23
.area idata
003A 486176656E2774207468697320636F6D .byte 'H,'a,'v,'e,'n,39,'t,32,'t,'h,'i,'s,32,'c,'o,'m
004A 6D616E642E0A00 .byte 'm,'a,'n,'d,46,10,0
.area data(ram, con, rel)
0051 .dbfile E:\Shuaihu\AVR\8880\shell.c
0051 L61:
0051 .blkb 3
.area idata
0051 3A0900 .byte 58,9,0
.area data(ram, con, rel)
0054 .dbfile E:\Shuaihu\AVR\8880\shell.c
0054 L23:
0054 .blkb 3
.area idata
0054 6F6E00 .byte 'o,'n,0
.area data(ram, con, rel)
0057 .dbfile E:\Shuaihu\AVR\8880\shell.c
0057 L12:
0057 .blkb 30
.area idata
0057 6175746F20616E737765722074686520 .byte 'a,'u,'t,'o,32,'a,'n,'s,'w,'e,'r,32,'t,'h,'e,32
0067 72656D6F74652063616C6C2E0A00 .byte 'r,'e,'m,'o,'t,'e,32,'c,'a,'l,'l,46,10,0
.area data(ram, con, rel)
0075 .dbfile E:\Shuaihu\AVR\8880\shell.c
0075 L11:
0075 .blkb 11
.area idata
0075 6175746F616E7377657200 .byte 'a,'u,'t,'o,'a,'n,'s,'w,'e,'r,0
.area data(ram, con, rel)
0080 .dbfile E:\Shuaihu\AVR\8880\shell.c
0080 L10:
0080 .blkb 28
.area idata
0080 726561642061206E756D626572206672 .byte 'r,'e,'a,'d,32,'a,32,'n,'u,'m,'b,'e,'r,32,'f,'r
0090 6F6D2072656D6F74652E0A00 .byte 'o,'m,32,'r,'e,'m,'o,'t,'e,46,10,0
.area data(ram, con, rel)
009C .dbfile E:\Shuaihu\AVR\8880\shell.c
009C L9:
009C .blkb 5
.area idata
009C 7265616400 .byte 'r,'e,'a,'d,0
.area data(ram, con, rel)
00A1 .dbfile E:\Shuaihu\AVR\8880\shell.c
00A1 L8:
00A1 .blkb 27
.area idata
00A1 656E61626C65206F7220646973656E61 .byte 'e,'n,'a,'b,'l,'e,32,'o,'r,32,'d,'i,'s,'e,'n,'a
00B1 626C65206563686F2E0A00 .byte 'b,'l,'e,32,'e,'c,'h,'o,46,10,0
.area data(ram, con, rel)
00BC .dbfile E:\Shuaihu\AVR\8880\shell.c
00BC L7:
00BC .blkb 5
.area idata
00BC 6563686F00 .byte 'e,'c,'h,'o,0
.area data(ram, con, rel)
00C1 .dbfile E:\Shuaihu\AVR\8880\shell.c
00C1 L6:
00C1 .blkb 24
.area idata
00C1 63616E63656C20612063616C6C207072 .byte 'c,'a,'n,'c,'e,'l,32,'a,32,'c,'a,'l,'l,32,'p,'r
00D1 6F636573732E0A00 .byte 'o,'c,'e,'s,'s,46,10,0
.area data(ram, con, rel)
00D9 .dbfile E:\Shuaihu\AVR\8880\shell.c
00D9 L5:
00D9 .blkb 7
.area idata
00D9 63616E63656C00 .byte 'c,'a,'n,'c,'e,'l,0
.area data(ram, con, rel)
00E0 .dbfile E:\Shuaihu\AVR\8880\shell.c
00E0 L4:
00E0 .blkb 37
.area idata
00E0 63616C6C20612074656C70686F6E206E .byte 'c,'a,'l,'l,32,'a,32,'t,'e,'l,'p,'h,'o,'n,32,'n
00F0 756D6265722C757365733A63616C6C20 .byte 'u,'m,'b,'e,'r,44,'u,'s,'e,'s,58,'c,'a,'l,'l,32
0100 3131300A00 .byte 49,49,48,10,0
.area data(ram, con, rel)
0105 .dbfile E:\Shuaihu\AVR\8880\shell.c
0105 L3:
0105 .blkb 5
.area idata
0105 63616C6C00 .byte 'c,'a,'l,'l,0
.area data(ram, con, rel)
010A .dbfile E:\Shuaihu\AVR\8880\shell.c
010A L2:
010A .blkb 27
.area idata
010A 446573706C6179207468697320696E66 .byte 'D,'e,'s,'p,'l,'a,'y,32,'t,'h,'i,'s,32,'i,'n,'f
011A 6F726D6174696F6E2E0A00 .byte 'o,'r,'m,'a,'t,'i,'o,'n,46,10,0
.area data(ram, con, rel)
0125 .dbfile E:\Shuaihu\AVR\8880\shell.c
0125 L1:
0125 .blkb 5
.area idata
0125 68656C7000 .byte 'h,'e,'l,'p,0
.area data(ram, con, rel)
012A .dbfile E:\Shuaihu\AVR\8880\shell.c
012A ; }
.area func_lit
0000 2000 PL_autoanswer: .word `_autoanswer
0002 0000 PL_read: .word `_read
0004 4500 PL_echo: .word `_echo
0006 BB00 PL_cancel: .word `_cancel
0008 6A00 PL_call: .word `_call
000A D900 PL_help: .word `_help
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -