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 + -
显示快捷键?