📄 console.s51
字号:
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
MOV ?V0 + 6,R4
MOV ?V0 + 7,R5
// 58 char i;
// 59 BYTE dig;
// 60 unsigned int divider;
// 61 unsigned int wordvalue;
// 62
// 63 #ifndef REPDUBUGINFO
// 64 //return;
// 65 #endif
// 66
// 67 wordvalue=highval*256+lowval;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV A,R0
MOV B,#0x0
MUL AB
XCH A,R0
MOV R2,B
MOV B,#0x1
MUL AB
ADD A,R2
MOV R2,A
MOV B,#0x0
MOV A,R1
MUL AB
ADD A,R2
MOV R1,A
MOV A,?V0 + 6
ADD A,R0
MOV R0,A
MOV A,?V0 + 7
ADDC A,R1
MOV R1,A
MOV ?V0 + 0,R0
MOV ?V0 + 1,R1
// 68 divider=10000;
MOV R6,#0x10
MOV R7,#0x27
// 69
// 70 if((highval==0xff)&&(lowval==0xff))
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
XRL A,#0xff
JNZ ??ConsolePutInitDataWithoutRtn_0
INC DPTR
MOVX A,@DPTR
XRL A,#0x0
??ConsolePutInitDataWithoutRtn_0:
JNZ ??ConsolePutInitDataWithoutRtn_1
MOV A,#-0x1
XRL A,?V0 + 6
JNZ ??ConsolePutInitDataWithoutRtn_2
MOV A,#0x0
XRL A,?V0 + 7
??ConsolePutInitDataWithoutRtn_2:
JNZ ??ConsolePutInitDataWithoutRtn_1
// 71 {
// 72 for(i=0;i<4;i++)
MOV ?V0 + 2,#0x0
??ConsolePutInitDataWithoutRtn_3:
MOV A,?V0 + 2
CLR C
SUBB A,#0x4
JNC ??ConsolePutInitDataWithoutRtn_4
// 73 halPutch('*');
; Setup parameters for call to function halPutch
MOV R1,#0x2a
LCALL halPutch
INC ?V0 + 2
SJMP ??ConsolePutInitDataWithoutRtn_3
// 74 return;
// 75 }
// 76
// 77 for(i=5; divider>wordvalue && i>1 ;i--)
??ConsolePutInitDataWithoutRtn_1:
MOV ?V0 + 2,#0x5
??ConsolePutInitDataWithoutRtn_5:
CLR C
MOV A,?V0 + 0
SUBB A,R6
MOV A,?V0 + 1
SUBB A,R7
JNC ??ConsolePutInitDataWithoutRtn_6
MOV A,?V0 + 2
CLR C
SUBB A,#0x2
JC ??ConsolePutInitDataWithoutRtn_6
// 78 {
// 79 divider/=10;
MOV A,R6
MOV R0,A
MOV A,R7
MOV R1,A
MOV R2,#0xa
MOV R3,#0x0
LCALL ?US_DIV_MOD
MOV ?V0 + 4,R0
MOV ?V0 + 5,R1
MOV R6,?V0 + 4
MOV R7,?V0 + 5
// 80 //ConsolePut(' ');
// 81 }
DEC ?V0 + 2
SJMP ??ConsolePutInitDataWithoutRtn_5
// 82 for(;i>0;i--)
??ConsolePutInitDataWithoutRtn_6:
MOV A,?V0 + 2
CLR C
SUBB A,#0x1
JC ??ConsolePutInitDataWithoutRtn_4
// 83 {
// 84
// 85 dig = (wordvalue/divider);
MOV R0,?V0 + 0
MOV R1,?V0 + 1
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
LCALL ?US_DIV_MOD
MOV A,R0
MOV ?V0 + 3,A
// 86 wordvalue = (wordvalue%divider);
MOV R0,?V0 + 0
MOV R1,?V0 + 1
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
LCALL ?US_DIV_MOD
MOV ?V0 + 4,R2
MOV ?V0 + 5,R3
MOV ?V0 + 0,?V0 + 4
MOV ?V0 + 1,?V0 + 5
// 87 halPutch(dig+0x30);
; Setup parameters for call to function halPutch
MOV A,#0x30
ADD A,?V0 + 3
MOV R1,A
LCALL halPutch
// 88
// 89 divider/=10;
MOV A,R6
MOV R0,A
MOV A,R7
MOV R1,A
MOV R2,#0xa
MOV R3,#0x0
LCALL ?US_DIV_MOD
MOV ?V0 + 4,R0
MOV ?V0 + 5,R1
MOV R6,?V0 + 4
MOV R7,?V0 + 5
// 90 }
DEC ?V0 + 2
SJMP ??ConsolePutInitDataWithoutRtn_6
??ConsolePutInitDataWithoutRtn_4:
MOV A,#0x2
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 15)
MOV R7,#0x8
LJMP ?FUNC_LEAVE_XDATA
CFI EndBlock cfiBlock1
// 91 //ConsolePut('\r');
// 92 //ConsolePut('\n');
// 93 }
// 94
// 95
// 96
// 97
// 98
RSEG NEAR_CODE:CODE:NOROOT(0)
// 99 void conPCRLF(void){
conPCRLF:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function conPCRLF
FUNCALL conPCRLF, conPrintROMString_func
; Saved register size: 0
; Auto size: 0
// 100 conPrintROMString("\n");
; Setup parameters for call to function conPrintROMString_func
MOV R2,#(??xxxxromstr & 0xff)
MOV R3,#((??xxxxromstr >> 8) & 0xff)
LCALL conPrintROMString_func
// 101 }
RET
CFI EndBlock cfiBlock2
RSEG CODE_C:CODE:REORDER:NOROOT(0)
??xxxxromstr:
DB "\012"
// 102
RSEG NEAR_CODE:CODE:NOROOT(0)
// 103 void conPrintROMString_func (ROMCHAR *s) {
conPrintROMString_func:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function conPrintROMString_func
FUNCALL conPrintROMString_func, halPutch
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
FUNCALL conPrintROMString_func, halPutch
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
PUSH DPL
CFI DPL0 Frame(CFA_SP, 3)
CFI CFA_SP SP+-3
PUSH DPH
CFI DPH0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
; Saved register size: 2
; Auto size: 0
MOV DPL,R2
MOV DPH,R3
// 104 while(*s) {
??conPrintROMString_func_0:
CLR A
MOVC A,@A+DPTR
JZ ??conPrintROMString_func_1
// 105 if (*s == '\n') halPutch('\r');
CLR A
MOVC A,@A+DPTR
XRL A,#0xa
JNZ ??conPrintROMString_func_2
; Setup parameters for call to function halPutch
MOV R1,#0xd
LCALL halPutch
// 106 halPutch(*s);
??conPrintROMString_func_2:
; Setup parameters for call to function halPutch
CLR A
MOVC A,@A+DPTR
MOV R1,A
LCALL halPutch
// 107 s++;
INC DPTR
SJMP ??conPrintROMString_func_0
// 108 }
// 109 }
??conPrintROMString_func_1:
POP DPH
CFI DPH0 SameValue
CFI CFA_SP SP+-3
POP DPL
CFI DPL0 SameValue
CFI CFA_SP SP+-2
RET
CFI EndBlock cfiBlock3
// 110
// 111
// 112
// 113
RSEG NEAR_CODE:CODE:NOROOT(0)
// 114 void conPrintString (char *s) {
conPrintString:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function conPrintString
FUNCALL conPrintString, halPutch
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
FUNCALL conPrintString, halPutch
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
PUSH DPL
CFI DPL0 Frame(CFA_SP, 3)
CFI CFA_SP SP+-3
PUSH DPH
CFI DPH0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
; Saved register size: 2
; Auto size: 0
MOV DPL,R2
MOV DPH,R3
// 115 while(*s) {
??conPrintString_0:
MOVX A,@DPTR
JZ ??conPrintString_1
// 116 if (*s == '\n') halPutch('\r');
MOVX A,@DPTR
XRL A,#0xa
JNZ ??conPrintString_2
; Setup parameters for call to function halPutch
MOV R1,#0xd
LCALL halPutch
// 117 halPutch(*s);
??conPrintString_2:
; Setup parameters for call to function halPutch
MOVX A,@DPTR
MOV R1,A
LCALL halPutch
// 118 s++;
INC DPTR
SJMP ??conPrintString_0
// 119 }
// 120 }
??conPrintString_1:
POP DPH
CFI DPH0 SameValue
CFI CFA_SP SP+-3
POP DPL
CFI DPL0 SameValue
CFI CFA_SP SP+-2
RET
CFI EndBlock cfiBlock4
// 121
RSEG NEAR_CODE:CODE:NOROOT(0)
// 122 void conPrintUINT8_noleader (UINT8 x) {
conPrintUINT8_noleader:
CFI Block cfiBlock5 Using cfiCommon0
CFI Function conPrintUINT8_noleader
FUNCALL conPrintUINT8_noleader, halPutch
LOCFRAME XSTACK, 8, STACK
ARGFRAME XSTACK, 8, STACK
FUNCALL conPrintUINT8_noleader, halPutch
LOCFRAME XSTACK, 8, STACK
ARGFRAME XSTACK, 8, STACK
FUNCALL conPrintUINT8_noleader, halPutch
LOCFRAME XSTACK, 8, STACK
ARGFRAME XSTACK, 8, STACK
FUNCALL conPrintUINT8_noleader, halPutch
LOCFRAME XSTACK, 8, STACK
ARGFRAME XSTACK, 8, STACK
MOV A,#-0x8
LCALL ?FUNC_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 8)
; Saved register size: 8
; Auto size: 0
MOV A,R1
MOV R6,A
// 123 BYTE c;
// 124 c = (x>>4)& 0xf;
MOV A,R6
SWAP A
ANL A,#0xf
MOV R7,A
// 125 if (c > 9) halPutch('A'+c-10);
MOV A,R7
CLR C
SUBB A,#0xa
JC ??conPrintUINT8_noleader_0
; Setup parameters for call to function halPutch
MOV A,#0x37
ADD A,R7
MOV R1,A
LCALL halPutch
SJMP ??conPrintUINT8_noleader_1
// 126 else halPutch('0'+c);
??conPrintUINT8_noleader_0:
; Setup parameters for call to function halPutch
MOV A,#0x30
ADD A,R7
MOV R1,A
LCALL halPutch
// 127 //LSDigit
// 128 c = x & 0xf;
??conPrintUINT8_noleader_1:
MOV A,#0xf
ANL A,R6
MOV R7,A
// 129 if (c > 9) halPutch('A'+c-10);
MOV A,R7
CLR C
SUBB A,#0xa
JC ??conPrintUINT8_noleader_2
; Setup parameters for call to function halPutch
MOV A,#0x37
ADD A,R7
MOV R1,A
LCALL halPutch
SJMP ??conPrintUINT8_noleader_3
// 130 else halPutch('0'+c);
??conPrintUINT8_noleader_2:
; Setup parameters for call to function halPutch
MOV A,#0x30
ADD A,R7
MOV R1,A
LCALL halPutch
// 131 }
??conPrintUINT8_noleader_3:
MOV R7,#0x1
LJMP ?FUNC_LEAVE_XDATA
CFI EndBlock cfiBlock5
// 132
RSEG NEAR_CODE:CODE:NOROOT(0)
// 133 void conPrintUINT8 (UINT8 x) {
conPrintUINT8:
CFI Block cfiBlock6 Using cfiCommon0
CFI Function conPrintUINT8
FUNCALL conPrintUINT8, conPrintROMString_func
LOCFRAME ISTACK, 1, STACK
ARGFRAME ISTACK, 1, STACK
FUNCALL conPrintUINT8, conPrintUINT8_noleader
LOCFRAME ISTACK, 1, STACK
ARGFRAME ISTACK, 1, STACK
MOV A,R6
CFI R6 A
PUSH A
CFI R6 Frame(CFA_SP, 3)
CFI CFA_SP SP+-3
; Saved register size: 1
; Auto size: 0
MOV A,R1
MOV R6,A
// 134 conPrintROMString("0x");
; Setup parameters for call to function conPrintROMString_func
MOV R2,#(??xxxxromstr_1 & 0xff)
MOV R3,#((??xxxxromstr_1 >> 8) & 0xff)
LCALL conPrintROMString_func
// 135 conPrintUINT8_noleader(x);
; Setup parameters for call to function conPrintUINT8_noleader
MOV A,R6
MOV R1,A
LCALL conPrintUINT8_noleader
// 136 }
POP A
CFI R6 A
CFI CFA_SP SP+-2
MOV R6,A
CFI R6 SameValue
RET
CFI EndBlock cfiBlock6
RSEG CODE_C:CODE:REORDER:NOROOT(0)
??xxxxromstr_1:
DB "0x"
// 137
RSEG NEAR_CODE:CODE:NOROOT(0)
// 138 void conPrintUINT16 (UINT16 x) {
conPrintUINT16:
CFI Block cfiBlock7 Using cfiCommon0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -