mainnew.asm
来自「开放源码的编译器open watcom 1.6.0版的源代码」· 汇编 代码 · 共 1,706 行 · 第 1/5 页
ASM
1,706 行
;retf MACRO POP_COUNT
; LOCAL DUMMY
; DUMMY PROC FAR
; RET POP_COUNT
; DUMMY ENDP
; ENDM
NAME main
EXTRN __argc :BYTE
EXTRN _big_code_ :BYTE
EXTRN _cstart_ :BYTE
EXTRN InputQueueFile_ :BYTE
EXTRN DoDebugMsg_ :BYTE
EXTRN atoi_ :BYTE
EXTRN InputQueueLine_ :BYTE
EXTRN AsmWarn_ :BYTE
EXTRN stricmp_ :BYTE
EXTRN strupr_ :BYTE
EXTRN __osmode :BYTE
EXTRN cpu_directive_ :BYTE
EXTRN _Code :BYTE
EXTRN MsgPrintf1_ :BYTE
EXTRN StoreConstant_ :BYTE
EXTRN AsmError_ :BYTE
EXTRN strchr_ :BYTE
EXTRN AsmAlloc_ :BYTE
EXTRN _makepath_ :BYTE
EXTRN _splitpath2_ :BYTE
EXTRN MsgGet_ :BYTE
EXTRN DelErrFile_ :BYTE
EXTRN ObjWriteOpen_ :BYTE
EXTRN Fatal_ :BYTE
EXTRN fopen_ :BYTE
EXTRN MemFini_ :BYTE
EXTRN AsmShutDown_ :BYTE
EXTRN GenMSOmfFini_ :BYTE
EXTRN GenMSOmfInit_ :BYTE
EXTRN ObjRecInit_ :BYTE
EXTRN MemInit_ :BYTE
EXTRN AsmFree_ :BYTE
EXTRN printf_ :BYTE
EXTRN PrintfUsage_ :BYTE
EXTRN MsgFini_ :BYTE
EXTRN PrintStats_ :BYTE
EXTRN WriteObjModule_ :BYTE
EXTRN PushLineQueue_ :BYTE
EXTRN AsmInit_ :BYTE
EXTRN exit_ :BYTE
EXTRN MsgInit_ :BYTE
EXTRN AddStringToIncludePath_ :BYTE
EXTRN getenv_ :BYTE
EXTRN strcat_ :BYTE
EXTRN strcpy_ :BYTE
EXTRN stackavail_ :BYTE
EXTRN strlen_ :BYTE
EXTRN tolower_ :BYTE
EXTRN __IsTable :BYTE
EXTRN __STK :BYTE
DGROUP GROUP CONST,CONST2,_DATA,_BSS
main_TEXT SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS:main_TEXT ,DS:DGROUP,SS:DGROUP
PUBLIC do_init_stuff_
PUBLIC main_
PUBLIC trademark_
PUBLIC AsmQueryExternal_
PUBLIC AsmQueryType_
L1 DB 57H,41H,54H,43H,4fH,4dH,20H,69H
DB 73H,20H,61H,20H,74H,72H,61H,64H
DB 65H,6dH,61H,72H,6bH,20H,6fH,66H
DB 20H,57H,41H,54H,43H,4fH,4dH,20H
DB 49H,6eH,74H,65H,72H,6eH,61H,74H
DB 69H,6fH,6eH,61H,6cH,20H,43H,6fH
DB 72H,70H,2eH,00H
L2 DB 43H,6fH,70H,79H,72H,69H,67H,68H
DB 74H,20H,62H,79H,20H,57H,41H,54H
DB 43H,4fH,4dH,20H,49H,6eH,74H,65H
DB 72H,6eH,61H,74H,69H,6fH,6eH,61H
DB 6cH,20H,43H,6fH,72H,70H,2eH,20H
DB 31H,39H,39H,32H,2cH,20H,31H,39H
DB 39H,33H,2eH,20H,41H,6cH,6cH,20H
DB 72H,69H,67H,68H,74H,73H,20H,72H
DB 65H,73H,65H,72H,76H,65H,64H,2eH
DB 00H
L3 DB 57H,41H,54H,43H,4fH,4dH,20H,41H
DB 73H,73H,65H,6dH,62H,6cH,65H,72H
DB 20H,56H,65H,72H,73H,69H,6fH,6eH
DB 20H,30H,2eH,39H,00H
L4 DB 64H,65H,62H,75H,67H,67H,69H,6eH
DB 67H,20H,6fH,75H,74H,70H,75H,74H
DB 20H,6fH,6eH,20H,0aH,00H
L5 DB 5fH,5fH,57H,49H,4eH,44H,4fH,57H
DB 53H,5fH,33H,38H,36H,5fH,5fH,00H
L6 DB 5fH,5fH,4eH,45H,54H,57H,41H,52H
DB 45H,5fH,33H,38H,36H,5fH,5fH,00H
L7 DB 5fH,5fH,52H,45H,47H,49H,53H,54H
DB 45H,52H,5fH,5fH,00H
L8 DB 5fH,5fH,46H,50H,49H,38H,37H,5fH
DB 5fH,00H
L9 DB 5fH,5fH,4dH,53H,44H,4fH,53H,5fH
DB 5fH,00H
L10 DB 5fH,5fH,53H,54H,41H,43H,4bH,5fH
DB 5fH,00H
L11 DB 50H,45H,4eH,50H,4fH,49H,4eH,54H
DB 00H
L12 DB 5fH,5fH,57H,41H,53H,4dH,5fH,5fH
DB 00H
L13 DB 5fH,49H,4eH,43H,4cH,55H,44H,45H
DB 00H
L14 DB 5fH,5fH,46H,50H,43H,5fH,5fH,00H
L15 DB 5fH,5fH,46H,50H,49H,5fH,5fH,00H
L16 DB 2eH,4dH,4fH,44H,45H,4cH,20H,00H
L17 DB 43H,4fH,4dH,50H,41H,43H,54H,00H
L18 DB 57H,49H,4eH,44H,4fH,57H,53H,00H
L19 DB 4eH,45H,54H,57H,41H,52H,45H,00H
L20 DB 49H,4eH,43H,4cH,55H,44H,45H,00H
L21 DB 4dH,45H,44H,49H,55H,4dH,00H
L22 DB 66H,70H,69H,38H,37H,00H
L23 DB 53H,4dH,41H,4cH,4cH,00H
L24 DB 4cH,41H,52H,47H,45H,00H
L25 DB 54H,49H,4eH,59H,00H
L26 DB 48H,55H,47H,45H,00H
L27 DB 46H,4cH,41H,54H,00H
L28 DB 57H,41H,53H,4dH,00H
L29 DB 66H,70H,63H,00H
L30 DB 66H,70H,69H,00H
L31 DB 51H,4eH,58H,00H
L32 DB 4fH,53H
L33 DB 32H,00H
L34 DB 44H,4fH
L35 DB 53H,00H
L36 DB 65H,72H,72H,00H
L37 DB 6fH,62H,6aH,00H
L38 DB 61H,73H,6dH,00H
L39 DB 25H,73H,0aH,00H
L40 DB 2fH,6dH,00H
L41 DB 4eH,54H,00H
L42 DB 5fH,5fH,00H
L43 DB 37H,00H
L44 DB 31H,00H
L45 DB 72H,00H
L46 DB 20H,00H
isvalidident_: push bp
mov bp,sp
push ax
mov ax,0018H
call far ptr __STK
pop ax
push bx
push cx
push si
push di
sub sp,000cH
mov word ptr [bp-14H],ax
mov word ptr [bp-12H],dx
lds bx,dword ptr [bp-14H]
mov bl,byte ptr [bx]
inc bl
xor bh,bh
test byte ptr ss:__IsTable[bx],20H
je short L47
mov word ptr [bp-0cH],0ffffH
jmp near ptr L65
L47: mov bx,word ptr [bp-14H]
mov word ptr [bp-10H],bx
mov bx,word ptr [bp-12H]
mov word ptr [bp-0eH],bx
L48: lds bx,dword ptr [bp-10H]
cmp byte ptr [bx],00H
jne short L50
jmp near ptr L64
L49: mov dx,word ptr [bp-10H]
mov ax,word ptr [bp-0eH]
inc word ptr [bp-10H]
jmp short L48
L50: lds bx,dword ptr [bp-10H]
mov al,byte ptr [bx]
xor ah,ah
call far ptr tolower_
mov byte ptr [bp-0aH],al
cmp byte ptr [bp-0aH],5fH
je short L51
cmp byte ptr [bp-0aH],2eH
jne short L52
L51: jmp short L53
L52: cmp byte ptr [bp-0aH],24H
jne short L54
L53: jmp short L55
L54: cmp byte ptr [bp-0aH],40H
jne short L56
L55: jmp short L57
L56: cmp byte ptr [bp-0aH],3fH
jne short L58
L57: jmp short L59
L58: mov bl,byte ptr [bp-0aH]
inc bl
xor bh,bh
test byte ptr ss:__IsTable[bx],20H
je short L60
L59: jmp short L61
L60: mov bl,byte ptr [bp-0aH]
inc bl
xor bh,bh
test byte ptr ss:__IsTable[bx],80H
je short L62
L61: jmp short L63
L62: mov word ptr [bp-0cH],0ffffH
jmp short L65
L63: jmp short L49
L64: mov word ptr [bp-0cH],0001H
L65: mov ax,word ptr [bp-0cH]
lea sp,[bp-8H]
pop di
pop si
pop cx
pop bx
pop bp
ret
get_os_include_: push bp
mov bp,sp
mov ax,001aH
call far ptr __STK
push bx
push cx
push dx
push si
push di
sub sp,000cH
mov bx,word ptr ss:_Options+0cH
mov dx,word ptr ss:_Options+0eH
mov ax,bx
call far ptr strlen_
add ax,000bH
and al,0feH
mov dx,ax
call far ptr stackavail_
cmp dx,ax
jae short L66
mov bx,word ptr ss:_Options+0cH
mov dx,word ptr ss:_Options+0eH
mov ax,bx
call far ptr strlen_
add ax,000bH
and al,0feH
sub sp,ax
mov ax,sp
mov dx,ss
mov bx,dx
mov word ptr [bp-16H],ax
mov word ptr [bp-14H],bx
jmp short L67
L66: mov word ptr [bp-16H],0000H
mov word ptr [bp-14H],0000H
L67: mov ax,word ptr [bp-16H]
mov word ptr [bp-12H],ax
mov ax,word ptr [bp-14H]
mov word ptr [bp-10H],ax
mov si,word ptr ss:_Options+0cH
mov cx,word ptr ss:_Options+0eH
mov bx,word ptr [bp-12H]
mov dx,word ptr [bp-10H]
mov ax,bx
mov bx,si
call far ptr strcpy_
mov cx,cs
mov ax,offset L13
mov si,ax
mov bx,word ptr [bp-12H]
mov dx,word ptr [bp-10H]
mov ax,bx
mov bx,si
call far ptr strcat_
mov bx,word ptr [bp-12H]
mov dx,word ptr [bp-10H]
mov ax,bx
call far ptr getenv_
mov bx,ax
mov ax,dx
mov word ptr [bp-0eH],bx
mov word ptr [bp-0cH],ax
mov dx,word ptr [bp-0eH]
mov ax,word ptr [bp-0cH]
xor cx,cx
xor bx,bx
cmp ax,bx
jne short L68
cmp dx,cx
je short L69
L68: mov bx,word ptr [bp-0eH]
mov dx,word ptr [bp-0cH]
mov ax,bx
call far ptr AddStringToIncludePath_
L69: lea sp,[bp-0aH]
pop di
pop si
pop dx
pop cx
pop bx
pop bp
ret
do_init_stuff_: inc bp
push bp
mov bp,sp
push ax
mov ax,0016H
call far ptr __STK
pop ax
push dx
push si
push di
sub sp,000aH
mov word ptr [bp-8H],ax
mov word ptr [bp-10H],bx
mov word ptr [bp-0eH],cx
lds bx,dword ptr [bp-10H]
mov bx,word ptr [bx]
lds si,dword ptr [bp-10H]
mov dx,word ptr [si+2H]
mov ax,bx
call far ptr MsgInit_
test ax,ax
je short L70
mov ax,0001H
jmp far ptr exit_
L70: mov bx,0ffffH
mov dx,0ffffH
mov ax,0ffffH
call far ptr AsmInit_
mov dx,cs
mov ax,offset L12
mov bx,ax
mov ax,bx
call near ptr add_constant_
xor cx,cx
mov dx,cs
mov ax,offset L28
mov bx,ax
mov ax,bx
mov bx,cx
call near ptr do_envvar_cmdline_
mov dx,word ptr [bp-10H]
mov cx,word ptr [bp-0eH]
mov ax,word ptr [bp-8H]
mov bx,dx
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?