?? cc1.asm
字號:
OR AX,AX
JNE $+5
JMP _75
MOV AX,-2[BP]
MOV BX,_lptr
ADD BX,AX
MOV AL,[BX]
CBW
MOV BX,AX
MOV AX,62
CALL __ne
OR AX,AX
JNE $+5
JMP _75
MOV AX,-2[BP]
MOV BX,_lptr
ADD BX,AX
MOV AL,[BX]
CBW
MOV BX,AX
MOV AX,10
CALL __ne
OR AX,AX
JNE $+5
JMP _75
MOV AX,1
JMP _76
_75:
XOR AX,AX
_76:
OR AX,AX
JNE $+5
JMP _74
MOV AX,-2[BP]
LEA BX,-32[BP]
ADD AX,BX
PUSH AX
MOV AX,-2[BP]
MOV BX,_lptr
ADD BX,AX
MOV AL,[BX]
CBW
POP BX
MOV [BX],AL
LEA BX,-2[BP]
MOV AX,[BX]
INC AX
MOV [BX],AX
JMP _73
_74:
MOV AX,-2[BP]
LEA BX,-32[BP]
ADD AX,BX
MOV BX,AX
MOV AX,OFFSET _NULL
MOV [BX],AL
LEA AX,-32[BP]
PUSH AX
MOV AX,OFFSET _69+0
PUSH AX
MOV CL,2
CALL _fopen
ADD SP,4
MOV _input2,AX
MOV BX,AX
MOV AX,OFFSET _NULL
CALL __eq
OR AX,AX
JNE $+5
JMP _77
MOV AX,OFFSET _EOF
MOV _input2,AX
MOV AX,OFFSET _69+2
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
_77:
XOR CL,CL
CALL _kill
MOV SP,BP
POP BP
RET
CODE ENDS
DATA SEGMENT PUBLIC
_69 DB 114,0,111,112,101,110,32,102,97,105
DB 108,117,114,101,32,111,110,32,105,110
DB 99,108,117,100,101,32,102,105,108,101
DB 0
DATA ENDS
CODE SEGMENT PUBLIC
ASSUME CS:CODE, SS:DATA, DS:DATA
PUBLIC _dodefine
_dodefine:
PUSH BP
MOV BP,SP
ADD SP,-2
MOV AX,OFFSET _msname
PUSH AX
MOV CL,1
CALL _symname
ADD SP,2
OR AX,AX
JE $+5
JMP _79
XOR CL,CL
CALL _illname
XOR CL,CL
CALL _kill
MOV SP,BP
POP BP
RET
_79:
LEA BX,-2[BP]
XOR AX,AX
MOV [BX],AX
MOV AX,OFFSET _msname
PUSH AX
PUSH _macn
MOV AX,11
PUSH AX
MOV AX,_macn
ADD AX,3300
PUSH AX
MOV AX,300
PUSH AX
XOR AX,AX
PUSH AX
MOV CL,6
CALL _search
ADD SP,12
OR AX,AX
JE $+5
JMP _80
MOV AX,_cptr
MOV _cptr2,AX
OR AX,AX
JNE $+5
JMP _81
_82:
MOV AX,_cptr2
ADD _cptr2,1
PUSH AX
LEA BX,-2[BP]
MOV AX,[BX]
INC WORD PTR [BX]
MOV BX,OFFSET _msname
ADD BX,AX
MOV AL,[BX]
CBW
POP BX
MOV [BX],AL
OR AX,AX
JNE $+5
JMP _83
JMP _82
_83:
JMP _84
_81:
MOV AX,OFFSET _78+0
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
MOV SP,BP
POP BP
RET
_84:
_80:
PUSH _macptr
MOV AX,_cptr
ADD AX,9
PUSH AX
MOV AX,2
PUSH AX
MOV CL,3
CALL _putint
ADD SP,6
_85:
XOR CL,CL
CALL _white
OR AX,AX
JNE $+5
JMP _86
XOR CL,CL
CALL _gch
JMP _85
_86:
_87:
XOR CL,CL
CALL _gch
PUSH AX
MOV CL,1
CALL _putmac
ADD SP,2
OR AX,AX
JNE $+5
JMP _88
JMP _87
_88:
MOV BX,_macptr
MOV AX,2099
CALL __ge
OR AX,AX
JNE $+5
JMP _89
MOV AX,OFFSET _78+22
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
MOV AX,7
PUSH AX
MOV CL,1
CALL _abort
ADD SP,2
_89:
MOV SP,BP
POP BP
RET
CODE ENDS
DATA SEGMENT PUBLIC
_78 DB 109,97,99,114,111,32,110,97,109,101
DB 32,116,97,98,108,101,32,102,117,108
DB 108,0,109,97,99,114,111,32,115,116
DB 114,105,110,103,32,113,117,101,117,101
DB 32,102,117,108,108,0
DATA ENDS
CODE SEGMENT PUBLIC
ASSUME CS:CODE, SS:DATA, DS:DATA
PUBLIC _putmac
_putmac:
PUSH BP
MOV BP,SP
MOV AX,_macptr
MOV BX,_macq
ADD AX,BX
PUSH AX
MOV AL,4[BP]
CBW
POP BX
MOV [BX],AL
MOV BX,_macptr
MOV AX,2099
CALL __lt
OR AX,AX
JNE $+5
JMP _91
MOV AX,_macptr
INC AX
MOV _macptr,AX
_91:
MOV AL,4[BP]
CBW
POP BP
RET
PUBLIC _dofuncti
_dofuncti:
PUSH BP
MOV BP,SP
ADD SP,-2
XOR AX,AX
MOV _litptr,AX
MOV _lastst,AX
MOV _noloc,AX
MOV _nogo,AX
XOR CL,CL
CALL _getlabel
MOV _litlab,AX
MOV AX,_symtab
MOV _locptr,AX
MOV AX,OFFSET _92+0
PUSH AX
MOV CL,1
CALL _match
ADD SP,2
OR AX,AX
JNE $+5
JMP _93
XOR CL,CL
CALL _blanks
_93:
MOV AL,_monitor
CBW
OR AX,AX
JNE $+5
JMP _94
PUSH _line
MOV AX,OFFSET _stderr
PUSH AX
MOV CL,2
CALL _lout
ADD SP,4
_94:
MOV AX,OFFSET _ssname
PUSH AX
MOV CL,1
CALL _symname
ADD SP,2
OR AX,AX
JE $+5
JMP _95
MOV AX,OFFSET _92+5
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
MOV _errflag,0
XOR CL,CL
CALL _kill
MOV SP,BP
POP BP
RET
_95:
MOV AX,OFFSET _ssname
PUSH AX
MOV CL,1
CALL _findglb
ADD SP,2
LEA BX,-2[BP]
MOV [BX],AX
OR AX,AX
JNE $+5
JMP _96
MOV BX,-2[BP]
INC BX
INC BX
MOV AL,[BX]
CBW
MOV BX,AX
MOV AX,4
CALL __eq
OR AX,AX
JNE $+5
JMP _97
MOV BX,-2[BP]
INC BX
INC BX
MOV AX,2
MOV [BX],AL
JMP _98
_97:
MOV AX,OFFSET _ssname
PUSH AX
MOV CL,1
CALL _multidef
ADD SP,2
_98:
JMP _99
_96:
MOV AX,OFFSET _ssname
PUSH AX
MOV AX,4
PUSH AX
MOV AX,8
PUSH AX
XOR AX,AX
PUSH AX
XOR AX,AX
PUSH AX
MOV AX,OFFSET _glbptr
PUSH AX
MOV AX,2
PUSH AX
MOV CL,7
CALL _addsym
ADD SP,14
_99:
MOV AX,4
PUSH AX
MOV CL,1
CALL _public
ADD SP,2
MOV _argstk,0
MOV AX,OFFSET _92+37
PUSH AX
MOV CL,1
CALL _match
ADD SP,2
OR AX,AX
JE $+5
JMP _100
MOV AX,OFFSET _92+39
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
_100:
_101:
MOV AX,OFFSET _92+53
PUSH AX
MOV CL,1
CALL _match
ADD SP,2
OR AX,AX
JE $+5
JMP _102
MOV AX,OFFSET _ssname
PUSH AX
MOV CL,1
CALL _symname
ADD SP,2
OR AX,AX
JNE $+5
JMP _103
MOV AX,OFFSET _ssname
PUSH AX
MOV CL,1
CALL _findloc
ADD SP,2
OR AX,AX
JNE $+5
JMP _104
MOV AX,OFFSET _ssname
PUSH AX
MOV CL,1
CALL _multidef
ADD SP,2
JMP _105
_104:
MOV AX,OFFSET _ssname
PUSH AX
XOR AX,AX
PUSH AX
XOR AX,AX
PUSH AX
XOR AX,AX
PUSH AX
PUSH _argstk
MOV AX,OFFSET _locptr
PUSH AX
MOV AX,1
PUSH AX
MOV CL,7
CALL _addsym
ADD SP,14
MOV AX,_argstk
INC AX
INC AX
MOV _argstk,AX
_105:
JMP _106
_103:
MOV AX,OFFSET _92+55
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
XOR CL,CL
CALL _skip
_106:
XOR CL,CL
CALL _blanks
PUSH _lptr
MOV AX,OFFSET _92+77
PUSH AX
MOV CL,2
CALL _streq
ADD SP,4
MOV BX,AX
XOR AX,AX
CALL __eq
OR AX,AX
JNE $+5
JMP _108
MOV AX,OFFSET _92+79
PUSH AX
MOV CL,1
CALL _match
ADD SP,2
MOV BX,AX
XOR AX,AX
CALL __eq
OR AX,AX
JNE $+5
JMP _108
MOV AX,1
JMP _109
_108:
XOR AX,AX
_109:
OR AX,AX
JNE $+5
JMP _107
MOV AX,OFFSET _92+81
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
_107:
XOR CL,CL
CALL _endst
OR AX,AX
JNE $+5
JMP _110
JMP _102
_110:
JMP _101
_102:
MOV _csp,0
MOV AX,_argstk
INC AX
INC AX
MOV _argtop,AX
_111:
MOV AX,_argstk
OR AX,AX
JNE $+5
JMP _112
MOV AX,OFFSET _92+90
PUSH AX
MOV AX,4
PUSH AX
MOV CL,2
CALL _amatch
ADD SP,4
OR AX,AX
JNE $+5
JMP _113
MOV AX,4
PUSH AX
MOV CL,1
CALL _doargs
ADD SP,2
XOR CL,CL
CALL _ns
JMP _114
_113:
MOV AX,OFFSET _92+95
PUSH AX
MOV AX,3
PUSH AX
MOV CL,2
CALL _amatch
ADD SP,4
OR AX,AX
JNE $+5
JMP _115
MOV AX,8
PUSH AX
MOV CL,1
CALL _doargs
ADD SP,2
XOR CL,CL
CALL _ns
JMP _116
_115:
MOV AX,OFFSET _92+99
PUSH AX
MOV AX,8
PUSH AX
MOV CL,2
CALL _amatch
ADD SP,4
OR AX,AX
JNE $+5
JMP _117
MOV AX,OFFSET _92+108
PUSH AX
MOV AX,4
PUSH AX
MOV CL,2
CALL _amatch
ADD SP,4
OR AX,AX
JNE $+5
JMP _118
MOV AX,5
PUSH AX
MOV CL,1
CALL _doargs
ADD SP,2
XOR CL,CL
CALL _ns
JMP _119
_118:
MOV AX,OFFSET _92+113
PUSH AX
MOV AX,3
PUSH AX
MOV CL,2
CALL _amatch
ADD SP,4
MOV AX,9
PUSH AX
MOV CL,1
CALL _doargs
ADD SP,2
XOR CL,CL
CALL _ns
_119:
JMP _120
_117:
MOV AX,OFFSET _92+117
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
JMP _112
_120:
_116:
_114:
JMP _111
_112:
MOV AX,18
PUSH AX
XOR AX,AX
PUSH AX
MOV CL,2
CALL _gen
ADD SP,4
XOR CL,CL
CALL _statemen
MOV BX,_lastst
MOV AX,3
CALL __ne
OR AX,AX
JNE $+5
JMP _122
MOV BX,_lastst
MOV AX,13
CALL __ne
OR AX,AX
JNE $+5
JMP _122
MOV AX,1
JMP _123
_122:
XOR AX,AX
_123:
OR AX,AX
JNE $+5
JMP _121
MOV AX,67
PUSH AX
XOR AX,AX
PUSH AX
MOV CL,2
CALL _gen
ADD SP,4
_121:
MOV AX,_litptr
OR AX,AX
JNE $+5
JMP _124
MOV AX,1
PUSH AX
MOV CL,1
CALL _toseg
ADD SP,2
MOV AX,66
PUSH AX
PUSH _litlab
MOV CL,2
CALL _gen
ADD SP,4
MOV AX,1
PUSH AX
MOV CL,1
CALL _dumplits
ADD SP,2
_124:
MOV SP,BP
POP BP
RET
CODE ENDS
DATA SEGMENT PUBLIC
_92 DB 118,111,105,100,0,105,108,108,101,103
DB 97,108,32,102,117,110,99,116,105,111
DB 110,32,111,114,32,100,101,99,108,97
DB 114,97,116,105,111,110,0,40,0,110
DB 111,32,111,112,101,110,32,112,97,114
DB 101,110,0,41,0,105,108,108,101,103
DB 97,108,32,97,114,103,117,109,101,110
DB 116,32,110,97,109,101,0,41,0,44
DB 0,110,111,32,99,111,109,109,97,0
DB 99,104,97,114,0,105,110,116,0,117
DB 110,115,105,103,110,101,100,0,99,104
DB 97,114,0,105,110,116,0,119,114,111
DB 110,103,32,110,117,109,98,101,114,32
DB 111,102,32,97,114,103,117,109,101,110
DB 116,115,0
DATA ENDS
CODE SEGMENT PUBLIC
ASSUME CS:CODE, SS:DATA, DS:DATA
PUBLIC _doargs
_doargs:
PUSH BP
MOV BP,SP
ADD SP,-7
_126:
MOV AX,_argstk
OR AX,AX
JE $+5
JMP _128
MOV SP,BP
POP BP
RET
_128:
PUSH 4[BP]
MOV AX,3
PUSH AX
LEA AX,-2[BP]
PUSH AX
LEA AX,-4[BP]
PUSH AX
MOV CL,4
CALL _decl
ADD SP,8
OR AX,AX
JNE $+5
JMP _129
MOV AX,OFFSET _ssname
PUSH AX
MOV CL,1
CALL _findloc
ADD SP,2
LEA BX,-7[BP]
MOV [BX],AX
OR AX,AX
JNE $+5
JMP _130
MOV AX,-2[BP]
MOV BX,-7[BP]
MOV [BX],AL
MOV AX,-7[BP]
INC AX
PUSH AX
MOV AX,4[BP]
POP BX
MOV [BX],AL
PUSH -4[BP]
MOV AX,-7[BP]
ADD AX,3
PUSH AX
MOV AX,2
PUSH AX
MOV CL,3
CALL _putint
ADD SP,6
MOV AX,-7[BP]
ADD AX,5
PUSH AX
MOV AX,2
PUSH AX
MOV CL,2
CALL _getint
ADD SP,4
MOV BX,_argtop
XCHG AX,BX
SUB AX,BX
PUSH AX
MOV AX,-7[BP]
ADD AX,5
PUSH AX
MOV AX,2
PUSH AX
MOV CL,3
CALL _putint
ADD SP,6
JMP _131
_130:
MOV AX,OFFSET _125+0
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
_131:
_129:
MOV AX,_argstk
DEC AX
DEC AX
MOV _argstk,AX
XOR CL,CL
CALL _endst
OR AX,AX
JNE $+5
JMP _132
MOV SP,BP
POP BP
RET
_132:
MOV AX,OFFSET _125+16
PUSH AX
MOV CL,1
CALL _match
ADD SP,2
OR AX,AX
JE $+5
JMP _133
MOV AX,OFFSET _125+18
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
_133:
JMP _126
_127:
MOV SP,BP
POP BP
RET
CODE ENDS
DATA SEGMENT PUBLIC
_125 DB 110,111,116,32,97,110,32,97,114,103
DB 117,109,101,110,116,0,44,0,110,111
DB 32,99,111,109,109,97,0
DATA ENDS
CODE SEGMENT PUBLIC
ASSUME CS:CODE, SS:DATA, DS:DATA
PUBLIC _decl
_decl:
PUSH BP
MOV BP,SP
ADD SP,-4
MOV AX,OFFSET _134+0
PUSH AX
MOV CL,1
CALL _match
ADD SP,2
OR AX,AX
JNE $+5
JMP _135
LEA BX,-4[BP]
MOV AX,1
MOV [BX],AX
JMP _136
_135:
LEA BX,-4[BP]
XOR AX,AX
MOV [BX],AX
_136:
MOV AX,OFFSET _134+2
PUSH AX
MOV CL,1
CALL _match
ADD SP,2
OR AX,AX
JNE $+5
JMP _137
MOV BX,6[BP]
MOV AX,3
MOV [BX],AX
MOV BX,4[BP]
MOV AX,2
MOV [BX],AX
JMP _138
_137:
MOV BX,6[BP]
MOV AX,1
MOV [BX],AX
MOV BX,10[BP]
MOV AX,2
MOV CX,AX
MOV AX,BX
SAR AX,CL
MOV BX,4[BP]
MOV [BX],AX
_138:
MOV AX,OFFSET _ssname
PUSH AX
MOV CL,1
CALL _symname
ADD SP,2
LEA BX,-2[BP]
MOV [BX],AX
OR AX,AX
JE $+5
JMP _139
XOR CL,CL
CALL _illname
_139:
MOV AX,-4[BP]
OR AX,AX
JNE $+5
JMP _141
MOV AX,OFFSET _134+4
PUSH AX
MOV CL,1
CALL _match
ADD SP,2
OR AX,AX
JNE $+5
JMP _141
MOV AX,1
JMP _142
_141:
XOR AX,AX
_142:
OR AX,AX
JNE $+5
JMP _140
_140:
MOV AX,OFFSET _134+6
PUSH AX
MOV CL,1
CALL _match
ADD SP,2
OR AX,AX
JNE $+5
JMP _143
MOV AX,-4[BP]
CALL __lneg
OR AX,AX
JE $+5
JMP _145
MOV BX,6[BP]
MOV AX,[BX]
MOV BX,AX
MOV AX,3
CALL __ne
OR AX,AX
JE $+5
JMP _145
XOR AX,AX
JMP _146
_145:
MOV AX,1
_146:
OR AX,AX
JNE $+5
JMP _144
MOV AX,OFFSET _134+8
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
_144:
MOV AX,OFFSET _134+21
PUSH AX
MOV CL,1
CALL _need
ADD SP,2
JMP _147
_143:
MOV BX,6[BP]
MOV AX,[BX]
MOV BX,AX
MOV AX,1
CALL __eq
OR AX,AX
JNE $+5
JMP _149
MOV AX,OFFSET _134+23
PUSH AX
MOV CL,1
CALL _match
ADD SP,2
OR AX,AX
JNE $+5
JMP _149
MOV AX,1
JMP _150
_149:
XOR AX,AX
_150:
OR AX,AX
JNE $+5
JMP _148
MOV AX,8[BP]
MOV BX,6[BP]
MOV [BX],AX
MOV AX,4[BP]
PUSH AX
MOV BX,AX
PUSH [BX]
XOR CL,CL
CALL _needsub
POP BX
IMUL BX
POP BX
MOV [BX],AX
OR AX,AX
JE $+5
JMP _151
MOV BX,8[BP]
MOV AX,2
CALL __eq
OR AX,AX
JNE $+5
JMP _152
MOV AX,OFFSET _134+25
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
_152:
MOV BX,4[BP]
MOV AX,2
MOV [BX],AX
_151:
_148:
_147:
MOV AX,-2[BP]
MOV SP,BP
POP BP
RET
CODE ENDS
DATA SEGMENT PUBLIC
_134 DB 40,0,42,0,41,0,40,0,116,114
DB 121,32,40,42,46,46,46,41,40,41
DB 0,41,0,91,0,110,101,101,100,32
DB 97,114,114,97,121,32,115,105,122,101
DB 0
DATA ENDS
CODE SEGMENT PUBLIC
ASSUME CS:CODE, SS:DATA, DS:DATA
PUBLIC _statemen
_statemen:
PUSH BP
MOV BP,SP
MOV BX,_ch
XOR AX,AX
CALL __eq
OR AX,AX
JNE $+5
JMP _155
MOV AX,_eof
OR AX,AX
JNE $+5
JMP _155
MOV AX,1
JMP _156
_155:
XOR AX,AX
_156:
OR AX,AX
JNE $+5
JMP _154
POP BP
RET
_154:
MOV AX,OFFSET _153+0
PUSH AX
MOV AX,4
PUSH AX
MOV CL,2
CALL _amatch
ADD SP,4
OR AX,AX
JNE $+5
JMP _158
MOV AX,4
PUSH AX
MOV CL,1
CALL _declloc
ADD SP,2
XOR CL,CL
CALL _ns
JMP _159
_158:
MOV AX,OFFSET _153+5
PUSH AX
MOV AX,3
PUSH AX
MOV CL,2
CALL _amatch
ADD SP,4
OR AX,AX
JNE $+5
JMP _160
MOV AX,8
PUSH AX
MOV CL,1
CALL _declloc
ADD SP,2
XOR CL,CL
CALL _ns
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -