📄 fprintf.mac
字号:
INCLUDE PROLOG.H
_CC1:
PUBLIC _fprintf
_fprintf:
SUB SP,2
MOV BX,0
ADD BX,SP
PUSH BX ;
CALL _CCARGC
XCHG DX,BX
MOV BX,6
ADD BX,SP
XCHG BX,DX
ADD BX,BX
ADD BX,DX
POP DX
MOV SI,DX
MOV [SI],BX
MOV BX,0
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
DEC BX
DEC BX
MOV SI,DX
MOV [SI],BX
MOV BX,[BX]
PUSH BX ;
MOV BX,2
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
DEC BX
DEC BX
MOV SI,DX
MOV [SI],BX
PUSH BX ;
CALL _Uprint
ADD SP,4
ADD SP,2
RET
PUBLIC _printf
_printf:
MOV BX,1
PUSH BX ;
CALL _CCARGC
XCHG DX,BX
MOV BX,4
ADD BX,SP
XCHG BX,DX
ADD BX,BX
ADD BX,DX
XCHG DX,BX
MOV BX,2
SUB DX,BX
MOV BX,DX
PUSH BX ;
CALL _Uprint
ADD SP,4
RET
PUBLIC _Uprint
_Uprint:
SUB SP,35
MOV BX,27
ADD BX,SP
XCHG DX,BX
MOV BX,0
MOV SI,DX
MOV [SI],BX
MOV BX,19
ADD BX,SP
PUSH BX ;
MOV BX,39
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
DEC BX
DEC BX
MOV SI,DX
MOV [SI],BX
INC BX
INC BX
MOV BX,[BX]
POP DX
MOV SI,DX
MOV [SI],BX
_CC5:
MOV BX,19
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
OR BX,BX
JNZ $+5
JMP _CC6
MOV BX,19
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
XCHG DX,BX
MOV BX,37
CMP DX,BX
MOV BX,CX
JE $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC7
MOV BX,19
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
DEC BX
MOV AL,[BX]
CBW
MOV BX,AX
PUSH BX ;
MOV BX,41
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _fputc
ADD SP,4
MOV BX,27
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
JMP _CC5
JMP _CC8
_CC7:
MOV BX,19
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
_CC8:
MOV BX,19
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
XCHG DX,BX
MOV BX,37
CMP DX,BX
MOV BX,CX
JNZ $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC9
MOV BX,19
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
DEC BX
MOV AL,[BX]
CBW
MOV BX,AX
PUSH BX ;
MOV BX,41
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _fputc
ADD SP,4
MOV BX,27
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
JMP _CC5
_CC9:
MOV BX,19
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
XCHG DX,BX
MOV BX,45
CMP DX,BX
MOV BX,CX
JNZ $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC10
MOV BX,31
ADD BX,SP
XCHG DX,BX
MOV BX,1
MOV SI,DX
MOV [SI],BX
MOV BX,19
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
JMP _CC11
_CC10:
MOV BX,31
ADD BX,SP
XCHG DX,BX
MOV BX,0
MOV SI,DX
MOV [SI],BX
_CC11:
MOV BX,19
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
XCHG DX,BX
MOV BX,48
CMP DX,BX
MOV BX,CX
JNZ $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC12
MOV BX,29
ADD BX,SP
XCHG DX,BX
MOV BX,48
MOV SI,DX
MOV [SI],BX
JMP _CC13
_CC12:
MOV BX,29
ADD BX,SP
XCHG DX,BX
MOV BX,32
MOV SI,DX
MOV [SI],BX
_CC13:
MOV BX,19
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
PUSH BX ;
CALL _isdigit
ADD SP,2
OR BX,BX
JNZ $+5
JMP _CC14
MOV BX,21
ADD BX,SP
PUSH BX ;
MOV BX,21
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
DEC BX
PUSH BX ;
CALL _atoi
ADD SP,2
POP DX
MOV SI,DX
MOV [SI],BX
_CC15:
MOV BX,19
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
PUSH BX ;
CALL _isdigit
ADD SP,2
OR BX,BX
JNZ $+5
JMP _CC16
MOV BX,19
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
JMP _CC15
_CC16:
JMP _CC17
_CC14:
MOV BX,21
ADD BX,SP
XCHG DX,BX
MOV BX,0
MOV SI,DX
MOV [SI],BX
_CC17:
MOV BX,19
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
XCHG DX,BX
MOV BX,46
CMP DX,BX
MOV BX,CX
JNZ $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC18
MOV BX,23
ADD BX,SP
PUSH BX ;
MOV BX,21
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
PUSH BX ;
CALL _atoi
ADD SP,2
POP DX
MOV SI,DX
MOV [SI],BX
_CC19:
MOV BX,19
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
PUSH BX ;
CALL _isdigit
ADD SP,2
OR BX,BX
JNZ $+5
JMP _CC20
MOV BX,19
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
JMP _CC19
_CC20:
JMP _CC21
_CC18:
MOV BX,23
ADD BX,SP
XCHG DX,BX
MOV BX,0
MOV SI,DX
MOV [SI],BX
_CC21:
MOV BX,33
ADD BX,SP
PUSH BX ;
MOV BX,39
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
DEC BX
DEC BX
MOV SI,DX
MOV [SI],BX
INC BX
INC BX
MOV BX,[BX]
POP DX
MOV SI,DX
MOV [SI],BX
MOV BX,17
ADD BX,SP
XCHG DX,BX
MOV BX,0
ADD BX,SP
MOV SI,DX
MOV [SI],BX
MOV BX,19
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
DEC BX
MOV AL,[BX]
CBW
MOV BX,AX
JMP _CC24
_CC25:
MOV BX,0
ADD BX,SP
XCHG DX,BX
MOV BX,33
ADD BX,SP
MOV BX,[BX]
MOV SI,DX
MOV [SI],BL
MOV BX,0
ADD BX,SP
MOV DX,1
ADD BX,DX
XCHG DX,BX
MOV BX,0
MOV SI,DX
MOV [SI],BL
JMP _CC23
_CC26:
MOV BX,17
ADD BX,SP
XCHG DX,BX
MOV BX,33
ADD BX,SP
MOV BX,[BX]
MOV SI,DX
MOV [SI],BX
JMP _CC23
_CC27:
MOV BX,33
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,2
ADD BX,SP
PUSH BX ;
CALL _itoa
ADD SP,4
JMP _CC23
_CC28:
MOV BX,33
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,2
ADD BX,SP
PUSH BX ;
MOV BX,2
PUSH BX ;
CALL _itoab
ADD SP,6
JMP _CC23
_CC29:
MOV BX,33
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,2
ADD BX,SP
PUSH BX ;
MOV BX,8
PUSH BX ;
CALL _itoab
ADD SP,6
JMP _CC23
_CC30:
MOV BX,33
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,2
ADD BX,SP
PUSH BX ;
MOV BX,10
PUSH BX ;
CALL _itoab
ADD SP,6
JMP _CC23
_CC31:
MOV BX,33
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,2
ADD BX,SP
PUSH BX ;
MOV BX,16
PUSH BX ;
CALL _itoab
ADD SP,6
JMP _CC23
_CC32:
MOV BX,27
ADD BX,SP
MOV BX,[BX]
ADD SP,35
RET
JMP _CC23
_CC24:
CALL _CCSWITCH
DW _CC25,99
DW _CC26,115
DW _CC27,100
DW _CC28,98
DW _CC29,111
DW _CC30,117
DW _CC31,120
DW 0
JMP _CC32
_CC23:
MOV BX,25
ADD BX,SP
PUSH BX ;
MOV BX,19
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _strlen
ADD SP,2
POP DX
MOV SI,DX
MOV [SI],BX
MOV BX,23
ADD BX,SP
MOV BX,[BX]
OR BX,BX
JNZ $+5
JMP _CC34
MOV BX,23
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,25
ADD BX,SP
MOV BX,[BX]
CMP DX,BX
MOV BX,CX
JGE $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC34
MOV BX,1
JMP _CC35
_CC34:
MOV BX,0
_CC35:
OR BX,BX
JNZ $+5
JMP _CC33
MOV BX,25
ADD BX,SP
XCHG DX,BX
MOV BX,23
ADD BX,SP
MOV BX,[BX]
MOV SI,DX
MOV [SI],BX
_CC33:
MOV BX,21
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,25
ADD BX,SP
MOV BX,[BX]
CMP DX,BX
MOV BX,CX
JLE $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC36
MOV BX,21
ADD BX,SP
PUSH BX ;
MOV BX,23
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,27
ADD BX,SP
MOV BX,[BX]
SUB DX,BX
MOV BX,DX
POP DX
MOV SI,DX
MOV [SI],BX
JMP _CC37
_CC36:
MOV BX,21
ADD BX,SP
XCHG DX,BX
MOV BX,0
MOV SI,DX
MOV [SI],BX
_CC37:
MOV BX,31
ADD BX,SP
MOV BX,[BX]
OR BX,BX
MOV BX,CX
JNZ $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC38
_CC39:
MOV BX,21
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
DEC BX
MOV SI,DX
MOV [SI],BX
INC BX
OR BX,BX
JNZ $+5
JMP _CC40
MOV BX,29
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,41
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _fputc
ADD SP,4
MOV BX,27
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
JMP _CC39
_CC40:
_CC38:
_CC41:
MOV BX,25
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
DEC BX
MOV SI,DX
MOV [SI],BX
INC BX
OR BX,BX
JNZ $+5
JMP _CC42
MOV BX,17
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
DEC BX
MOV AL,[BX]
CBW
MOV BX,AX
PUSH BX ;
MOV BX,41
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _fputc
ADD SP,4
MOV BX,27
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
JMP _CC41
_CC42:
MOV BX,31
ADD BX,SP
MOV BX,[BX]
OR BX,BX
JNZ $+5
JMP _CC43
_CC44:
MOV BX,21
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
DEC BX
MOV SI,DX
MOV [SI],BX
INC BX
OR BX,BX
JNZ $+5
JMP _CC45
MOV BX,29
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,41
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _fputc
ADD SP,4
MOV BX,27
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
JMP _CC44
_CC45:
_CC43:
JMP _CC5
_CC6:
MOV BX,27
ADD BX,SP
MOV BX,[BX]
ADD SP,35
RET
EXTRN _strlen:NEAR
EXTRN _itoa:NEAR
EXTRN _isdigit:NEAR
EXTRN _CCARGC:NEAR
EXTRN _fputc:NEAR
EXTRN _itoab:NEAR
EXTRN _atoi:NEAR
EXTRN _CCSWITCH:NEAR
INCLUDE EPILOG.H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -