getarg.mac
来自「--- --- ---基于C语言的编译器的 简单实现」· MAC 代码 · 共 136 行
MAC
136 行
INCLUDE PROLOG.H
_CC1:
PUBLIC _getarg
_getarg:
SUB SP,4
MOV BX,14
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,0
CMP DX,BX
MOV BX,CX
JGE $+3
INC BX
PUSH BX ;
MOV BX,16
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,10
ADD BX,SP
MOV BX,[BX]
CMP DX,BX
MOV BX,CX
JL $+3
INC BX
POP DX
OR BX,DX
OR BX,BX
JNZ $+5
JMP _CC3
MOV BX,12
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,0
MOV SI,DX
MOV [SI],BL
MOV BX,-1
ADD SP,4
RET
_CC3:
MOV BX,0
ADD BX,SP
XCHG DX,BX
MOV BX,0
MOV SI,DX
MOV [SI],BX
MOV BX,2
ADD BX,SP
PUSH BX ;
MOV BX,8
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,16
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
MOV BX,[BX]
POP DX
MOV SI,DX
MOV [SI],BX
_CC4:
MOV BX,0
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,10
ADD BX,SP
MOV BX,[BX]
CMP DX,BX
MOV BX,CX
JGE $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC5
MOV BX,12
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,0
ADD BX,SP
MOV BX,[BX]
ADD BX,DX
PUSH BX ;
MOV BX,4
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,2
ADD BX,SP
MOV BX,[BX]
ADD BX,DX
MOV AL,[BX]
CBW
MOV BX,AX
POP DX
MOV SI,DX
MOV [SI],BL
OR BX,BX
JZ $+5
JMP _CC6
JMP _CC5
_CC6:
MOV BX,0
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
JMP _CC4
_CC5:
MOV BX,12
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,0
ADD BX,SP
MOV BX,[BX]
ADD BX,DX
XCHG DX,BX
MOV BX,0
MOV SI,DX
MOV [SI],BL
MOV BX,0
ADD BX,SP
MOV BX,[BX]
ADD SP,4
RET
INCLUDE EPILOG.H
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?