atoi.mac

来自「这是一个8086和8088系列机的编译器的源码」· MAC 代码 · 共 132 行

MAC
132
字号
 INCLUDE PROLOG.H
_CC1:
 PUBLIC _atoi
_atoi:
 SUB SP,4
_CC3:
 MOV BX,6
 ADD BX,SP
 MOV BX,[BX]
 MOV AL,[BX]
 CBW
 MOV BX,AX
 PUSH BX  ;
 CALL _isspace
 ADD SP,2
 OR BX,BX
 JNZ $+5
 JMP _CC4
 MOV BX,6
 ADD BX,SP
 MOV DX,BX
 MOV BX,[BX]
 INC BX
 MOV SI,DX
 MOV [SI],BX
 JMP _CC3
_CC4:
 MOV BX,2
 ADD BX,SP
 XCHG DX,BX
 MOV BX,1
 MOV SI,DX
 MOV [SI],BX
 MOV BX,6
 ADD BX,SP
 MOV BX,[BX]
 MOV AL,[BX]
 CBW
 MOV BX,AX
 JMP _CC7
_CC8:
 MOV BX,2
 ADD BX,SP
 XCHG DX,BX
 MOV BX,-1
 MOV SI,DX
 MOV [SI],BX
_CC9:
 MOV BX,6
 ADD BX,SP
 MOV DX,BX
 MOV BX,[BX]
 INC BX
 MOV SI,DX
 MOV [SI],BX
 JMP _CC6
_CC7:
 CALL _CCSWITCH
 DW _CC8,45
 DW _CC9,43
 DW 0
_CC6:
 MOV BX,0
 ADD BX,SP
 XCHG DX,BX
 MOV BX,0
 MOV SI,DX
 MOV [SI],BX
_CC10:
 MOV BX,6
 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 _CC11
 MOV BX,0
 ADD BX,SP
 PUSH BX  ;
 MOV BX,2
 ADD BX,SP
 MOV BX,[BX]
 MOV DX,10
 MOV AX,DX
 IMUL BX
 MOV BX,AX
 PUSH BX  ;
 MOV BX,10
 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
 POP DX
 ADD BX,DX
 XCHG DX,BX
 MOV BX,48
 SUB DX,BX
 MOV BX,DX
 POP DX
 MOV SI,DX
 MOV [SI],BX
 JMP _CC10
_CC11:
 MOV BX,2
 ADD BX,SP
 MOV BX,[BX]
 XCHG DX,BX
 MOV BX,0
 ADD BX,SP
 MOV BX,[BX]
 MOV AX,DX
 IMUL BX
 MOV BX,AX
 ADD SP,4
 RET
 EXTRN _isdigit:NEAR
 EXTRN _isspace:NEAR
 EXTRN _CCSWITCH:NEAR
 INCLUDE EPILOG.H
 END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?