?? cc1.asm
字號:
CALL _getlabel
POP BX
MOV [BX],AX
PUSH AX
MOV CL,2
CALL _gen
ADD SP,4
MOV AX,_swnext
ADD _swnext,2
PUSH AX
MOV CL,1
CALL _constexp
ADD SP,2
MOV AX,OFFSET _235+29
PUSH AX
MOV CL,1
CALL _need
ADD SP,2
POP BP
RET
CODE ENDS
DATA SEGMENT PUBLIC
_235 DB 110,111,116,32,105,110,32,115,119,105
DB 116,99,104,0,116,111,111,32,109,97
DB 110,121,32,99,97,115,101,115,0,58
DB 0
DATA ENDS
CODE SEGMENT PUBLIC
ASSUME CS:CODE, SS:DATA, DS:DATA
PUBLIC _dodefaul
_dodefaul:
PUSH BP
MOV BP,SP
MOV AX,_swactive
OR AX,AX
JNE $+5
JMP _239
MOV AX,_swdefaul
OR AX,AX
JNE $+5
JMP _240
MOV AX,OFFSET _238+0
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
_240:
JMP _241
_239:
MOV AX,OFFSET _238+18
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
_241:
MOV AX,OFFSET _238+32
PUSH AX
MOV CL,1
CALL _need
ADD SP,2
MOV AX,41
PUSH AX
XOR CL,CL
CALL _getlabel
MOV _swdefaul,AX
PUSH AX
MOV CL,2
CALL _gen
ADD SP,4
POP BP
RET
CODE ENDS
DATA SEGMENT PUBLIC
_238 DB 109,117,108,116,105,112,108,101,32,100
DB 101,102,97,117,108,116,115,0,110,111
DB 116,32,105,110,32,115,119,105,116,99
DB 104,0,58,0
DATA ENDS
CODE SEGMENT PUBLIC
ASSUME CS:CODE, SS:DATA, DS:DATA
PUBLIC _dogoto
_dogoto:
PUSH BP
MOV BP,SP
MOV AX,_nogo
OR AX,AX
JG $+5
JMP _243
MOV AX,OFFSET _242+0
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
JMP _244
_243:
MOV _noloc,1
_244:
MOV AX,OFFSET _ssname
PUSH AX
MOV CL,1
CALL _symname
ADD SP,2
OR AX,AX
JNE $+5
JMP _245
MOV AX,40
PUSH AX
MOV AX,OFFSET _NO
PUSH AX
MOV CL,1
CALL _addlabel
ADD SP,2
PUSH AX
MOV CL,2
CALL _gen
ADD SP,4
JMP _246
_245:
MOV AX,OFFSET _242+30
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
_246:
XOR CL,CL
CALL _ns
POP BP
RET
CODE ENDS
DATA SEGMENT PUBLIC
_242 DB 110,111,116,32,97,108,108,111,119,101
DB 100,32,119,105,116,104,32,98,108,111
DB 99,107,45,108,111,99,97,108,115,0
DB 98,97,100,32,108,97,98,101,108,0
DATA ENDS
CODE SEGMENT PUBLIC
ASSUME CS:CODE, SS:DATA, DS:DATA
PUBLIC _dolabel
_dolabel:
PUSH BP
MOV BP,SP
ADD SP,-2
XOR CL,CL
CALL _blanks
MOV AX,_lptr
LEA BX,-2[BP]
MOV [BX],AX
MOV AX,OFFSET _ssname
PUSH AX
MOV CL,1
CALL _symname
ADD SP,2
OR AX,AX
JNE $+5
JMP _248
XOR CL,CL
CALL _gch
MOV BX,AX
MOV AX,58
CALL __eq
OR AX,AX
JNE $+5
JMP _249
MOV AX,41
PUSH AX
MOV AX,OFFSET _YES
PUSH AX
MOV CL,1
CALL _addlabel
ADD SP,2
PUSH AX
MOV CL,2
CALL _gen
ADD SP,4
MOV AX,1
MOV SP,BP
POP BP
RET
_249:
MOV AX,_lptr
MOV BX,-2[BP]
XCHG AX,BX
SUB AX,BX
PUSH AX
MOV CL,1
CALL _bump
ADD SP,2
_250:
_248:
XOR AX,AX
MOV SP,BP
POP BP
RET
PUBLIC _addlabel
_addlabel:
PUSH BP
MOV BP,SP
MOV AX,OFFSET _ssname
PUSH AX
MOV CL,1
CALL _findloc
ADD SP,2
MOV _cptr,AX
OR AX,AX
JNE $+5
JMP _252
MOV BX,_cptr
MOV AL,[BX]
CBW
OR AX,AX
JNE $+5
JMP _253
MOV AX,OFFSET _251+0
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
JMP _254
_253:
MOV AX,4[BP]
OR AX,AX
JNE $+5
JMP _255
MOV BX,_cptr
MOV AL,1[BX]
CBW
OR AX,AX
JNE $+5
JMP _256
MOV AX,OFFSET _251+12
PUSH AX
MOV CL,1
CALL _error
ADD SP,2
JMP _257
_256:
MOV AX,_cptr
INC AX
MOV BX,AX
MOV AX,OFFSET _YES
MOV [BX],AL
_257:
_255:
_254:
JMP _258
_252:
MOV AX,OFFSET _ssname
PUSH AX
XOR AX,AX
PUSH AX
PUSH 4[BP]
XOR AX,AX
PUSH AX
XOR CL,CL
CALL _getlabel
PUSH AX
MOV AX,OFFSET _locptr
PUSH AX
XOR AX,AX
PUSH AX
MOV CL,7
CALL _addsym
ADD SP,14
MOV _cptr,AX
_258:
MOV AX,_cptr
ADD AX,5
PUSH AX
MOV AX,2
PUSH AX
MOV CL,2
CALL _getint
ADD SP,4
POP BP
RET
CODE ENDS
DATA SEGMENT PUBLIC
_251 DB 110,111,116,32,97,32,108,97,98,101
DB 108,0,100,117,112,108,105,99,97,116
DB 101,32,108,97,98,101,108,0
DATA ENDS
CODE SEGMENT PUBLIC
ASSUME CS:CODE, SS:DATA, DS:DATA
PUBLIC _doreturn
_doreturn:
PUSH BP
MOV BP,SP
ADD SP,-2
XOR CL,CL
CALL _endst
OR AX,AX
JE $+5
JMP _260
MOV AX,OFFSET _YES
PUSH AX
MOV CL,1
CALL _doexpr
ADD SP,2
_260:
MOV AX,_csp
LEA BX,-2[BP]
MOV [BX],AX
MOV AX,67
PUSH AX
XOR AX,AX
PUSH AX
MOV CL,2
CALL _gen
ADD SP,4
MOV AX,-2[BP]
MOV _csp,AX
MOV SP,BP
POP BP
RET
PUBLIC _dobreak
_dobreak:
PUSH BP
MOV BP,SP
ADD SP,-2
PUSH _wqptr
MOV CL,1
CALL _readwhil
ADD SP,2
LEA BX,-2[BP]
MOV [BX],AX
OR AX,AX
JE $+5
JMP _262
MOV SP,BP
POP BP
RET
_262:
MOV AX,2
PUSH AX
MOV BX,-2[BP]
PUSH [BX]
MOV CL,2
CALL _gen
ADD SP,4
MOV AX,40
PUSH AX
MOV BX,-2[BP]
ADD BX,4
PUSH [BX]
MOV CL,2
CALL _gen
ADD SP,4
MOV SP,BP
POP BP
RET
PUBLIC _docont
_docont:
PUSH BP
MOV BP,SP
ADD SP,-2
MOV AX,_wqptr
LEA BX,-2[BP]
MOV [BX],AX
_264:
PUSH -2[BP]
MOV CL,1
CALL _readwhil
ADD SP,2
LEA BX,-2[BP]
MOV [BX],AX
OR AX,AX
JE $+5
JMP _266
MOV SP,BP
POP BP
RET
_266:
MOV BX,-2[BP]
INC BX
INC BX
MOV AX,[BX]
OR AX,AX
JNE $+5
JMP _267
JMP _265
_267:
JMP _264
_265:
MOV AX,2
PUSH AX
MOV BX,-2[BP]
PUSH [BX]
MOV CL,2
CALL _gen
ADD SP,4
MOV AX,40
PUSH AX
MOV BX,-2[BP]
INC BX
INC BX
PUSH [BX]
MOV CL,2
CALL _gen
ADD SP,4
MOV SP,BP
POP BP
RET
PUBLIC _doasm
_doasm:
PUSH BP
MOV BP,SP
MOV _ccode,0
_269:
XOR CL,CL
CALL _inline
MOV AX,OFFSET _268+0
PUSH AX
MOV CL,1
CALL _match
ADD SP,2
OR AX,AX
JNE $+5
JMP _271
JMP _270
_271:
MOV AX,_eof
OR AX,AX
JNE $+5
JMP _272
JMP _270
_272:
PUSH _line
PUSH _output
MOV CL,2
CALL _fputs
ADD SP,4
JMP _269
_270:
XOR CL,CL
CALL _kill
MOV _ccode,1
POP BP
RET
CODE ENDS
DATA SEGMENT PUBLIC
_268 DB 35,101,110,100,97,115,109,0
DATA ENDS
CODE SEGMENT PUBLIC
ASSUME CS:CODE, SS:DATA, DS:DATA
PUBLIC _doexpr
_doexpr:
PUSH BP
MOV BP,SP
ADD SP,-8
MOV AX,4[BP]
MOV _usexpr,AX
_274:
LEA AX,-6[BP]
PUSH AX
LEA AX,-8[BP]
PUSH AX
MOV CL,2
CALL _setstage
ADD SP,4
LEA AX,-2[BP]
PUSH AX
LEA AX,-4[BP]
PUSH AX
MOV CL,2
CALL _expressi
ADD SP,4
PUSH -6[BP]
PUSH -8[BP]
MOV CL,2
CALL _clearsta
ADD SP,4
MOV BX,_ch
MOV AX,44
CALL __ne
OR AX,AX
JNE $+5
JMP _276
JMP _275
_276:
MOV AX,1
PUSH AX
MOV CL,1
CALL _bump
ADD SP,2
JMP _274
_275:
MOV AX,OFFSET _YES
MOV _usexpr,AX
MOV SP,BP
POP BP
RET
PUBLIC _ask
_ask:
PUSH BP
MOV BP,SP
ADD SP,-2
XOR AX,AX
MOV _nxtlab,AX
MOV _listfp,AX
LEA BX,-2[BP]
MOV [BX],AX
MOV AX,OFFSET _stdout
MOV _output,AX
MOV AX,OFFSET _YES
MOV _optimize,AL
MOV AX,OFFSET _NO
MOV _pause,AL
MOV _monitor,AL
MOV _alarm,AL
MOV AX,_mline
MOV _line,AX
_278:
LEA BX,-2[BP]
MOV AX,[BX]
INC AX
MOV [BX],AX
PUSH AX
PUSH _line
MOV AX,128
PUSH AX
PUSH _argcs
PUSH _argvs
MOV CL,5
CALL _getarg
ADD SP,10
MOV BX,AX
MOV AX,OFFSET _EOF
CALL __ne
OR AX,AX
JNE $+5
JMP _279
MOV BX,_line
MOV AL,[BX]
CBW
MOV BX,AX
MOV AX,45
CALL __ne
OR AX,AX
JNE $+5
JMP _281
MOV BX,_line
MOV AL,[BX]
CBW
MOV BX,AX
MOV AX,47
CALL __ne
OR AX,AX
JNE $+5
JMP _281
MOV AX,1
JMP _282
_281:
XOR AX,AX
_282:
OR AX,AX
JNE $+5
JMP _280
JMP _278
_280:
MOV BX,_line
MOV AL,1[BX]
CBW
PUSH AX
MOV CL,1
CALL _toupper
ADD SP,2
MOV BX,AX
MOV AX,76
CALL __eq
OR AX,AX
JNE $+5
JMP _284
MOV BX,_line
MOV AL,2[BX]
CBW
PUSH AX
MOV CL,1
CALL _isdigit
ADD SP,2
OR AX,AX
JNE $+5
JMP _284
MOV BX,_line
MOV AL,3[BX]
CBW
MOV BX,AX
MOV AX,32
CALL __le
OR AX,AX
JNE $+5
JMP _284
MOV AX,1
JMP _285
_284:
XOR AX,AX
_285:
OR AX,AX
JNE $+5
JMP _283
MOV BX,_line
MOV AL,2[BX]
CBW
SUB AX,48
MOV _listfp,AX
JMP _278
_283:
MOV BX,_line
MOV AL,1[BX]
CBW
PUSH AX
MOV CL,1
CALL _toupper
ADD SP,2
MOV BX,AX
MOV AX,78
CALL __eq
OR AX,AX
JNE $+5
JMP _287
MOV BX,_line
MOV AL,2[BX]
CBW
PUSH AX
MOV CL,1
CALL _toupper
ADD SP,2
MOV BX,AX
MOV AX,79
CALL __eq
OR AX,AX
JNE $+5
JMP _287
MOV BX,_line
MOV AL,3[BX]
CBW
MOV BX,AX
MOV AX,32
CALL __le
OR AX,AX
JNE $+5
JMP _287
MOV AX,1
JMP _288
_287:
XOR AX,AX
_288:
OR AX,AX
JNE $+5
JMP _286
MOV AX,OFFSET _NO
MOV _optimize,AL
JMP _278
_286:
MOV BX,_line
MOV AL,2[BX]
CBW
MOV BX,AX
MOV AX,32
CALL __le
OR AX,AX
JNE $+5
JMP _289
MOV BX,_line
MOV AL,1[BX]
CBW
PUSH AX
MOV CL,1
CALL _toupper
ADD SP,2
MOV BX,AX
MOV AX,65
CALL __eq
OR AX,AX
JNE $+5
JMP _290
MOV AX,OFFSET _YES
MOV _alarm,AL
JMP _278
_290:
MOV BX,_line
MOV AL,1[BX]
CBW
PUSH AX
MOV CL,1
CALL _toupper
ADD SP,2
MOV BX,AX
MOV AX,77
CALL __eq
OR AX,AX
JNE $+5
JMP _291
MOV AX,OFFSET _YES
MOV _monitor,AL
JMP _278
_291:
MOV BX,_line
MOV AL,1[BX]
CBW
PUSH AX
MOV CL,1
CALL _toupper
ADD SP,2
MOV BX,AX
MOV AX,80
CALL __eq
OR AX,AX
JNE $+5
JMP _292
MOV AX,OFFSET _YES
MOV _pause,AL
JMP _278
_292:
_289:
MOV AX,OFFSET _277+0
PUSH AX
MOV AX,OFFSET _stderr
PUSH AX
MOV CL,2
CALL _fputs
ADD SP,4
MOV AX,7
PUSH AX
MOV CL,1
CALL _abort
ADD SP,2
JMP _278
_279:
MOV SP,BP
POP BP
RET
CODE ENDS
DATA SEGMENT PUBLIC
_277 DB 117,115,97,103,101,58,32,99,99,32
DB 91,102,105,108,101,93,46,46,46,32
DB 91,45,109,93,32,91,45,97,93,32
DB 91,45,112,93,32,91,45,108,35,93
DB 32,91,45,110,111,93,10,0
DATA ENDS
CODE SEGMENT PUBLIC
ASSUME CS:CODE, SS:DATA, DS:DATA
PUBLIC _openfile
_openfile:
PUSH BP
MOV BP,SP
ADD SP,-21
MOV AX,OFFSET _EOF
MOV _input,AX
_294:
MOV AX,_filearg
INC AX
MOV _filearg,AX
PUSH AX
PUSH _pline
MOV AX,128
PUSH AX
PUSH _argcs
PUSH _argvs
MOV CL,5
CALL _getarg
ADD SP,10
MOV BX,AX
MOV AX,OFFSET _EOF
CALL __ne
OR AX,AX
JNE $+5
JMP _295
MOV BX,_pline
MOV AL,[BX]
CBW
MOV BX,AX
MOV AX,45
CALL __eq
OR AX,AX
JE $+5
JMP _297
MOV BX,_pline
MOV AL,[BX]
CBW
MOV BX,AX
MOV AX,47
CALL __eq
OR AX,AX
JE $+5
JMP _297
XOR AX,AX
JMP _298
_297:
MOV AX,1
_298:
OR AX,AX
JNE $+5
JMP _296
JMP _294
_296:
MOV AX,OFFSET _NO
LEA BX,-21[BP]
MOV [BX],AX
LEA BX,-17[BP]
MOV AX,-1
MOV [BX],AX
LEA BX,-19[BP]
XOR AX,AX
MOV [BX],AX
_299:
LEA BX,-17[BP]
MOV AX,[BX]
INC AX
MOV [BX],AX
MOV BX,_pline
ADD BX,AX
MOV AL,[BX]
CBW
OR AX,AX
JNE $+5
JMP _300
MOV AX,-17[BP]
MOV BX,_pline
ADD BX,AX
MOV AL,[BX]
CBW
MOV BX,AX
MOV AX,46
CALL __eq
OR AX,AX
JNE $+5
JMP _301
MOV AX,OFFSET _YES
LEA BX,-21[BP]
MOV [BX],AX
JMP _300
_301:
MOV BX,-19[BP]
MOV AX,10
CALL __lt
OR AX,AX
JNE $+5
JMP _302
LEA BX,-19[BP]
MOV AX,[BX]
INC WORD PTR [BX]
LEA BX,-15[BP]
ADD AX,BX
PUSH AX
MOV AX,-17[BP]
MOV BX,_pline
ADD BX,AX
MOV AL,[BX]
CBW
POP BX
MOV [BX],AL
_302:
JMP _299
_300:
MOV AX,-21[BP]
CALL __lneg
OR AX,AX
JNE $+5
JMP _303
MOV AX,-17[BP]
MOV BX,_pline
ADD AX,BX
PUSH AX
MOV AX,OFFSET _293+0
PUSH AX
MOV CL,2
CALL _strcpy
ADD SP,4
_303:
PUSH _pline
MOV AX,OFFSET _293+3
PUSH AX
MOV CL,2
CALL _mustopen
ADD SP,4
MOV _input,AX
MOV AX,_files
CALL __lneg
OR AX,AX
JNE $+5
JMP _305
MOV AX,OFFSET _stdout
PUSH AX
MOV CL,1
CALL _iscons
ADD SP,2
OR AX,AX
JNE $+5
JMP _305
MOV AX,1
JMP _306
_305:
XOR AX,AX
_306:
OR AX,AX
JNE $+5
JMP _304
MOV AX,-19[BP]
LEA BX,-15[BP]
ADD AX,BX
PUSH AX
MOV AX,OFFSET _293+5
PUSH AX
MOV CL,2
CALL _strcpy
ADD SP,4
LEA AX,-15[BP]
PUSH AX
MOV AX,OFFSET _293+10
PUSH AX
MOV CL,2
CALL _mustopen
ADD SP,4
MOV _output,AX
_304:
MOV AX,OFFSET _YES
MOV _files,AX
XOR CL,CL
CALL _kill
MOV SP,BP
POP BP
RET
JMP _294
_295:
MOV AX,_files
ADD _files,1
OR AX,AX
JNE $+5
JMP _307
MOV AX,OFFSET _YES
MOV _eof,AX
JMP _308
_307:
MOV AX,OFFSET _stdin
MOV _input,AX
_308:
XOR CL,CL
CALL _kill
MOV SP,BP
POP BP
RET
CODE ENDS
DATA SEGMENT PUBLIC
_293 DB 46,67,0,114,0,46,65,83,77,0
DB 119,0
DATA ENDS
CODE SEGMENT PUBLIC
ASSUME CS:CODE, SS:DATA, DS:DATA
PUBLIC _mustopen
_mustopen:
PUSH BP
MOV BP,SP
ADD SP,-2
PUSH 6[BP]
PUSH 4[BP]
MOV CL,2
CALL _fopen
ADD SP,4
LEA BX,-2[BP]
MOV [BX],AX
OR AX,AX
JNE $+5
JMP _310
MOV AX,-2[BP]
MOV SP,BP
POP BP
RET
_310:
MOV AX,OFFSET _309+0
PUSH AX
MOV AX,OFFSET _stderr
PUSH AX
MOV CL,2
CALL _fputs
ADD SP,4
PUSH 6[BP]
MOV AX,OFFSET _stderr
PUSH AX
MOV CL,2
CALL _lout
ADD SP,4
MOV AX,7
PUSH AX
MOV CL,1
CALL _abort
ADD SP,2
MOV SP,BP
POP BP
RET
CODE ENDS
DATA SEGMENT PUBLIC
_309 DB 111,112,101,110,32,101,114,114,111,114
DB 32,111,110,32,0
DATA ENDS
CODE SEGMENT PUBLIC
ASSUME CS:CODE, SS:DATA, DS:DATA
EXTRN _NULL:NEAR
EXTRN _nextsym:NEAR
EXTRN _clearsta:NEAR
EXTRN _kill:NEAR
EXTRN _iscons:NEAR
EXTRN _public:NEAR
EXTRN _addwhile:NEAR
EXTRN _amatch:NEAR
EXTRN _dumpzero:NEAR
EXTRN _setcodes:NEAR
EXTRN _string:NEAR
EXTRN _getint:NEAR
EXTRN _stowlit:NEAR
EXTRN _strcpy:NEAR
EXTRN _symname:NEAR
EXTRN _blanks:NEAR
EXTRN _findglb:NEAR
EXTRN _multidef:NEAR
EXTRN _preproce:NEAR
EXTRN _point:NEAR
EXTRN _NO:NEAR
EXTRN _endst:NEAR
EXTRN _isdigit:NEAR
EXTRN _search:NEAR
EXTRN _VERSION:NEAR
EXTRN _header:NEAR
EXTRN _lout:NEAR
EXTRN _findloc:NEAR
EXTRN _skip:NEAR
EXTRN _trailer:NEAR
EXTRN _test:NEAR
EXTRN _fopen:NEAR
EXTRN _getlabel:NEAR
EXTRN _setstage:NEAR
EXTRN _match:NEAR
EXTRN _stdin:NEAR
EXTRN _EOF:NEAR
EXTRN _white:NEAR
EXTRN _stderr:NEAR
EXTRN _gch:NEAR
EXTRN _fclose:NEAR
EXTRN _delwhile:NEAR
EXTRN _toseg:NEAR
EXTRN _external:NEAR
EXTRN _gen:NEAR
EXTRN _ns:NEAR
EXTRN _error:NEAR
EXTRN _dumplits:NEAR
EXTRN _abort:NEAR
EXTRN _addsym:NEAR
EXTRN _constexp:NEAR
EXTRN _streq:NEAR
EXTRN _illname:NEAR
EXTRN _fputs:NEAR
EXTRN _inline:NEAR
EXTRN _expressi:NEAR
EXTRN _stdout:NEAR
EXTRN _calloc:NEAR
EXTRN _putint:NEAR
EXTRN _YES:NEAR
EXTRN _toupper:NEAR
EXTRN _bump:NEAR
EXTRN _readwhil:NEAR
EXTRN _getarg:NEAR
EXTRN _need:NEAR
EXTRN _CRIGHT1:NEAR
EXTRN __main:NEAR
CODE ENDS
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -