📄 serial.src
字号:
INC DPTR
INC DPTR
CLR A
MOVX @DPTR,A
?C0033:
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
INC DPTR
INC DPTR
MOVX A,@DPTR
CLR C
SUBB A,#04H
JNC ?C0027
; PrintChar(' ');
; SOURCE LINE # 254
MOV R7,#020H
LCALL _?PrintChar
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
INC DPTR
INC DPTR
MOVX A,@DPTR
INC A
MOVX @DPTR,A
SJMP ?C0033
; }
; SOURCE LINE # 255
?C0032:
; else PrintChar(ch);
; SOURCE LINE # 256
MOV DPTR,#03H
LCALL ?C?XBPOFF
MOVX A,@DPTR
MOV R7,A
?C0183:
LCALL _?PrintChar
; }
; SOURCE LINE # 257
?C0027:
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
CLR A
MOV B,#01H
LCALL ?C?IILDX
LJMP ?C0025
?C0026:
; //EA=1;
; //出临界区
; #pragma ASM
; POP IE;
POP IE;
; #pragma ENDASM
; }
; SOURCE LINE # 263
MOV DPTR,#07H
LJMP ?C?ADDXBP
; END OF _?PrintStr
;
; void clrscr() reentrant//清屏
RSEG ?PR?_?clrscr?SERIAL
_?clrscr:
USING 0
; SOURCE LINE # 265
; {
; PrintStr("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");//25个回车换行清屏幕。
; SOURCE LINE # 267
MOV R3,#0FFH
MOV R2,#HIGH (?SC_0)
MOV R1,#LOW (?SC_0)
LJMP _?PrintStr
; END OF _?clrscr
; }
;
; //============================================================================================
; //
; //============================================================================================
; void yyprintf(char *fmt,...) reentrant //自编简单printf等效函数
RSEG ?PR?_?yyprintf?SERIAL
_?yyprintf:
USING 0
; SOURCE LINE # 273
MOV DPTR,#0FFFDH
LCALL ?C?ADDXBP
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
MOV DPTR,#0FFFBH
LCALL ?C?ADDXBP
; {
; void *p; //任意指针,可以指向任何类型,C语法不对其严格要求。
; char ch;
; unsigned char j;
;
; p=&fmt;
; SOURCE LINE # 279
MOV R3,#01H
MOV DPTR,#05H
LCALL ?C?XBPOFF
MOV R1,DPL
MOV R2,DPH
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
; p=(char **)p+1; //此处p是指向指针的指针,fmt是字符串指针,p是指向fmt的指针
; SOURCE LINE # 280
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
ADD A,#03H
MOV R1,A
CLR A
ADDC A,R2
MOV R2,A
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
;
; //入临界区
; #pragma ASM
; PUSH IE;
PUSH IE;
; CLR EA;
CLR EA;
; #pragma ENDASM
;
; while(1){
; SOURCE LINE # 288
?C0041:
; while((ch=*fmt++)!='%'){
; SOURCE LINE # 289
MOV DPTR,#05H
LCALL ?C?XBPOFF
MOVX A,@DPTR
MOV R3,A
INC DPTR
CLR A
MOV B,#01H
LCALL ?C?ILDIX
MOV R1,B
MOV R2,A
LCALL ?C?CLDPTR
MOV R7,A
MOV DPTR,#03H
LCALL ?C?XBPOFF
MOV A,R7
MOVX @DPTR,A
XRL A,#025H
JZ ?C0042
; if(ch=='\0'){
; SOURCE LINE # 290
MOV DPTR,#03H
LCALL ?C?XBPOFF
MOVX A,@DPTR
MOV R7,A
JNZ ?C0043
; //出临界区
; #pragma ASM
; POP IE;
POP IE;
LJMP ?C0044
; #pragma ENDASM
; return;
; }
; SOURCE LINE # 296
?C0043:
; else if(ch=='\n'){PrintChar(10);PrintChar(13);}
; SOURCE LINE # 297
MOV A,R7
CJNE A,#0AH,?C0046
MOV R7,#0AH
LCALL _?PrintChar
MOV R7,#0DH
SJMP ?C0184
?C0046:
; else if(ch=='\t'){
; SOURCE LINE # 298
MOV DPTR,#03H
LCALL ?C?XBPOFF
MOVX A,@DPTR
CJNE A,#09H,?C0048
; for(j=0;j<TABNum;j++)
; SOURCE LINE # 299
MOV DPTR,#04H
LCALL ?C?XBPOFF
CLR A
MOVX @DPTR,A
?C0049:
MOV DPTR,#04H
LCALL ?C?XBPOFF
MOVX A,@DPTR
CLR C
SUBB A,#04H
JNC ?C0041
; PrintChar(' ');
; SOURCE LINE # 300
MOV R7,#020H
LCALL _?PrintChar
MOV DPTR,#04H
LCALL ?C?XBPOFF
MOVX A,@DPTR
INC A
MOVX @DPTR,A
SJMP ?C0049
; }
; SOURCE LINE # 301
?C0048:
; else PrintChar(ch);
; SOURCE LINE # 302
MOV DPTR,#03H
LCALL ?C?XBPOFF
MOVX A,@DPTR
MOV R7,A
?C0184:
LCALL _?PrintChar
; }
; SOURCE LINE # 303
SJMP ?C0041
?C0042:
; ch=*fmt++;
; SOURCE LINE # 304
MOV DPTR,#05H
LCALL ?C?XBPOFF
MOVX A,@DPTR
MOV R3,A
INC DPTR
CLR A
MOV B,#01H
LCALL ?C?ILDIX
MOV R1,B
MOV R2,A
LCALL ?C?CLDPTR
MOV R7,A
MOV DPTR,#03H
LCALL ?C?XBPOFF
MOV A,R7
MOVX @DPTR,A
; switch(ch){
; SOURCE LINE # 305
MOV DPTR,#03H
LCALL ?C?XBPOFF
MOVX A,@DPTR
LCALL ?C?CCASE
DW ?C0070
DB 025H
DW ?C0058
DB 062H
DW ?C0054
DB 063H
DW ?C0055
DB 064H
DW ?C0067
DB 066H
DW ?C0059
DB 06CH
DW ?C0057
DB 06FH
DW ?C0069
DB 073H
DW ?C0068
DB 075H
DW ?C0056
DB 078H
DW 00H
DW ?C0071
; case 'c':
; SOURCE LINE # 306
?C0054:
; PrintChar(*((char *)p));
; SOURCE LINE # 307
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
LCALL ?C?CLDPTR
MOV R7,A
; p=(char *)p+1;
; SOURCE LINE # 308
; break;
; SOURCE LINE # 309
LJMP ?C0185
; case 'd':
; SOURCE LINE # 310
?C0055:
; PrintN(*((int *)p),10);
; SOURCE LINE # 311
MOV R4,#00H
MOV R5,#0AH
; p=(int *)p+1;
; SOURCE LINE # 312
; break;
; SOURCE LINE # 313
SJMP ?C0186
; case 'x':
; SOURCE LINE # 314
?C0056:
; PrintN(*((int *)p),16);
; SOURCE LINE # 315
MOV R4,#00H
MOV R5,#010H
?C0186:
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
LCALL ?C?ILDPTR
MOV R7,A
MOV R6,B
LCALL _?PrintN
; p=(int *)p+1;
; SOURCE LINE # 316
; break;
; SOURCE LINE # 317
LJMP ?C0189
; case 'o':
; SOURCE LINE # 318
?C0057:
; PrintUN(*((int *)p),8);
; SOURCE LINE # 319
MOV R5,#08H
LCALL L?0210
; p=(int *)p+1;
; SOURCE LINE # 320
?C0187:
; break;
; SOURCE LINE # 321
LJMP ?C0189
; case 'b':
; SOURCE LINE # 322
?C0058:
; PrintUN(*((int *)p),2);
; SOURCE LINE # 323
MOV R5,#02H
LCALL L?0210
; p=(int *)p+1;
; SOURCE LINE # 324
?C0188:
; break;
; SOURCE LINE # 325
LJMP ?C0189
; case 'l':
; SOURCE LINE # 326
?C0059:
; ch=*fmt++;
; SOURCE LINE # 327
MOV DPTR,#05H
LCALL ?C?XBPOFF
MOVX A,@DPTR
MOV R3,A
INC DPTR
CLR A
MOV B,#01H
LCALL ?C?ILDIX
MOV R1,B
MOV R2,A
LCALL ?C?CLDPTR
MOV R7,A
MOV DPTR,#03H
LCALL ?C?XBPOFF
MOV A,R7
MOVX @DPTR,A
; switch(ch){
; SOURCE LINE # 328
MOV DPTR,#03H
LCALL ?C?XBPOFF
MOVX A,@DPTR
ADD A,#09EH
JZ ?C0064
ADD A,#0F3H
JZ ?C0062
ADD A,#0FAH
JZ ?C0063
ADD A,#0FDH
JZ ?C0065
ADD A,#014H
JNZ ?C0066
; case 'd':
; SOURCE LINE # 329
?C0061:
; PrintLN(*((long *)p),10);
; SOURCE LINE # 330
MOV DPTR,#0FFFCH
LCALL ?C?ADDXBP
LCALL ?C?LSTKXDATA
DB 00H
DB 00H
DB 00H
DB 0AH
; p=(long *)p+1;
; SOURCE LINE # 331
; break;
; SOURCE LINE # 332
SJMP ?C0190
; case 'o':
; SOURCE LINE # 333
?C0062:
; PrintLUN(*((long *)p),8);
; SOURCE LINE # 334
MOV DPTR,#0FFFCH
LCALL ?C?ADDXBP
LCALL ?C?LSTKXDATA
DB 00H
DB 00H
DB 00H
DB 08H
; p=(long *)p+1;
; SOURCE LINE # 335
; break;
; SOURCE LINE # 336
SJMP ?C0192
; case 'u':
; SOURCE LINE # 337
?C0063:
; PrintLUN(*((unsigned long *)p),10);
; SOURCE LINE # 338
MOV DPTR,#0FFFCH
LCALL ?C?ADDXBP
LCALL ?C?LSTKXDATA
DB 00H
DB 00H
DB 00H
DB 0AH
?C0191:
; p=(unsigned long *)p+1;
; SOURCE LINE # 339
; break;
; SOURCE LINE # 340
SJMP ?C0192
; case 'b':
; SOURCE LINE # 341
?C0064:
; PrintLUN(*((long *)p),2);
; SOURCE LINE # 342
MOV DPTR,#0FFFCH
LCALL ?C?ADDXBP
LCALL ?C?LSTKXDATA
DB 00H
DB 00H
DB 00H
DB 02H
?C0192:
MOV DPTR,#04H
LCALL ?C?XBPOFF
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
LCALL ?C?LLDPTR
LCALL _?PrintLUN
; p=(long *)p+1;
; SOURCE LINE # 343
; break;
; SOURCE LINE # 344
SJMP ?C0194
; case 'x':
; SOURCE LINE # 345
?C0065:
; PrintLN(*((long *)p),16);
; SOURCE LINE # 346
MOV DPTR,#0FFFCH
LCALL ?C?ADDXBP
LCALL ?C?LSTKXDATA
DB 00H
DB 00H
DB 00H
DB 010H
?C0190:
MOV DPTR,#04H
LCALL ?C?XBPOFF
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
LCALL ?C?LLDPTR
LCALL _?PrintLN
; p=(long *)p+1;
; SOURCE LINE # 347
?C0193:
; break;
; SOURCE LINE # 348
SJMP ?C0194
; default:
; SOURCE LINE # 349
?C0066:
; //出临界区
; #pragma ASM
; POP IE;
POP IE;
LJMP ?C0044
; #pragma ENDASM
; return;
; }
; SOURCE LINE # 355
; break;
; SOURCE LINE # 356
; case 'f':
; SOURCE LINE # 357
?C0067:
; DispF(*((float *)p));
; SOURCE LINE # 358
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
LCALL ?C?LLDPTR
LCALL _?DispF
; p=(float *)p+1;
; SOURCE LINE # 359
?C0194:
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
ADD A,#04H
; break;
; SOURCE LINE # 360
SJMP ?C0197
; case 'u':
; SOURCE LINE # 361
?C0068:
; PrintUN(*((unsigned int *)p),10);
; SOURCE LINE # 362
MOV R4,#00H
MOV R5,#0AH
LCALL L?0211
; p=(unsigned int *)p+1;
; SOURCE LINE # 363
?C0189:
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
ADD A,#02H
?C0195:
; break;
; SOURCE LINE # 364
SJMP ?C0197
; case 's':
; SOURCE LINE # 365
?C0069:
; PrintStr(*((char **)p));
; SOURCE LINE # 366
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
LCALL ?C?PLDPTR
LCALL _?PrintStr
; p=(char **)p+1;
; SOURCE LINE # 367
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
ADD A,#03H
?C0196:
; break;
; SOURCE LINE # 368
SJMP ?C0197
; case '%':
; SOURCE LINE # 369
?C0070:
; PrintChar('%');
; SOURCE LINE # 370
MOV R7,#025H
?C0185:
LCALL _?PrintChar
; p=(char *)p+1;
; SOURCE LINE # 371
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
ADD A,#01H
?C0197:
MOV R1,A
CLR A
ADDC A,R2
MOV R2,A
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
; break;
; SOURCE LINE # 372
LJMP ?C0041
; default:
; SOURCE LINE # 373
?C0071:
; //出临界区
; #pragma ASM
; POP IE;
POP IE;
; #pragma ENDASM
; return;
; }
; SOURCE LINE # 379
; }
; SOURCE LINE # 380
; }
; SOURCE LINE # 381
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -