macro.asm

来自「开放源码的编译器open watcom 1.6.0版的源代码」· 汇编 代码 · 共 1,661 行 · 第 1/5 页

ASM
1,661
字号
;retf            MACRO   POP_COUNT
;                LOCAL   DUMMY
;                DUMMY   PROC FAR
;                RET     POP_COUNT
;                DUMMY   ENDP
;                ENDM
                NAME    macro
                EXTRN   _big_code_ :BYTE
                EXTRN   get_curr_filename_ :BYTE
                EXTRN   dir_insert_ :BYTE
                EXTRN   PushMacro_ :BYTE
                EXTRN   AsmScan_ :BYTE
                EXTRN   _StringBuf :BYTE
                EXTRN   EvalExpr_ :BYTE
                EXTRN   ExpandSymbol_ :BYTE
                EXTRN   itoa_ :BYTE
                EXTRN   DoDebugMsg_ :BYTE
                EXTRN   stackavail_ :BYTE
                EXTRN   atoi_ :BYTE
                EXTRN   strncat_ :BYTE
                EXTRN   ReadTextLine_ :BYTE
                EXTRN   strcmp_ :BYTE
                EXTRN   _Token_Count :BYTE
                EXTRN   AsmGetSymbol_ :BYTE
                EXTRN   _Parse_Pass :BYTE
                EXTRN   InputQueueLine_ :BYTE
                EXTRN   _MacroLocalVarCounter :BYTE
                EXTRN   PushLineQueue_ :BYTE
                EXTRN   AsmError_ :BYTE
                EXTRN   _AsmBuffer :BYTE
                EXTRN   strnicmp_ :BYTE
                EXTRN   wipe_space_ :BYTE
                EXTRN   __IsTable :BYTE
                EXTRN   AsmFree_ :BYTE
                EXTRN   InternalError_ :BYTE
                EXTRN   sprintf_ :BYTE
                EXTRN   strcat_ :BYTE
                EXTRN   strncpy_ :BYTE
                EXTRN   strncmp_ :BYTE
                EXTRN   strcpy_ :BYTE
                EXTRN   strlen_ :BYTE
                EXTRN   AsmAlloc_ :BYTE
                EXTRN   __STK :BYTE
DGROUP          GROUP   CONST,CONST2,_DATA,_BSS
macro_TEXT      SEGMENT BYTE PUBLIC  'CODE'
                ASSUME  CS:macro_TEXT ,DS:DGROUP,SS:DGROUP
                PUBLIC  ExpandMacro_
                PUBLIC  MacroDef_
L1              DB      4dH,61H,63H,72H,6fH,20H,65H,78H
                DB      70H,61H,6eH,73H,69H,6fH,6eH,3aH
                DB      20H,20H,25H,73H,20H,0aH,00H
L2              DB      2eH,2eH,5cH,63H,5cH,6dH,61H,63H
                DB      72H,6fH,2eH,63H,00H
L3              DB      20H,54H,45H,58H,54H,45H,51H,55H
                DB      20H,00H
L4              DB      3fH,3fH,25H,23H,30H,34H,64H,00H
L5              DB      6cH,6fH,63H,61H,6cH,00H
L6              DB      6dH,61H,63H,72H,6fH,00H
L7              DB      65H,6eH,64H,6dH,00H
L8              DB      52H,45H,51H,00H
L9              DB      25H,32H,64H,00H
L10             DB      23H,00H
asmline_insert_: push    bp
                mov     bp,sp
                push    ax
                mov     ax,001cH
                call    far ptr __STK
                pop     ax
                push    si
                push    di
                sub     sp,0014H
                mov     word ptr -18H[bp],ax
                mov     word ptr -16H[bp],dx
                mov     word ptr -14H[bp],bx
                mov     word ptr -12H[bp],cx
                mov     ax,word ptr -18H[bp]
                mov     word ptr -0cH[bp],ax
                mov     ax,word ptr -16H[bp]
                mov     word ptr -0aH[bp],ax
L11:            lds     bx,dword ptr -0cH[bp]
                mov     dx,word ptr [bx]
                lds     bx,dword ptr -0cH[bp]
                mov     ax,word ptr +2H[bx]
                xor     cx,cx
                xor     bx,bx
                cmp     ax,bx
                jne     short L13
                cmp     dx,cx
                jne     short L13
                jmp     short L14
L12:            lds     bx,dword ptr -0cH[bp]
                mov     dx,word ptr [bx]
                lds     bx,dword ptr -0cH[bp]
                mov     ax,word ptr +2H[bx]
                mov     word ptr -0cH[bp],dx
                mov     word ptr -0aH[bp],ax
                jmp     short L11
L13:            jmp     short L12
L14:            mov     ax,0009H
                call    far ptr AsmAlloc_
                mov     cx,ax
                mov     bx,dx
                mov     word ptr -8H[bp],cx
                mov     word ptr -6H[bp],bx
                lds     bx,dword ptr -8H[bp]
                mov     word ptr [bx],0000H
                lds     bx,dword ptr -8H[bp]
                mov     word ptr +2H[bx],0000H
                mov     bx,word ptr -14H[bp]
                mov     dx,word ptr -12H[bp]
                mov     ax,bx
                call    far ptr strlen_
                inc     ax
                call    far ptr AsmAlloc_
                mov     cx,ax
                mov     bx,dx
                lds     si,dword ptr -8H[bp]
                mov     word ptr +4H[si],cx
                lds     si,dword ptr -8H[bp]
                mov     word ptr +6H[si],bx
                lds     bx,dword ptr -8H[bp]
                mov     byte ptr +8H[bx],00H
                mov     si,word ptr -14H[bp]
                mov     cx,word ptr -12H[bp]
                lds     bx,dword ptr -8H[bp]
                mov     bx,word ptr +4H[bx]
                lds     di,dword ptr -8H[bp]
                mov     dx,word ptr +6H[di]
                mov     ax,bx
                mov     bx,si
                call    far ptr strcpy_
                mov     bx,word ptr -8H[bp]
                lds     si,dword ptr -0cH[bp]
                mov     word ptr [si],bx
                mov     bx,word ptr -6H[bp]
                lds     si,dword ptr -0cH[bp]
                mov     word ptr +2H[si],bx
                mov     bx,word ptr -8H[bp]
                mov     word ptr -10H[bp],bx
                mov     bx,word ptr -6H[bp]
                mov     word ptr -0eH[bp],bx
                mov     ax,word ptr -10H[bp]
                mov     dx,word ptr -0eH[bp]
                lea     sp,-4H[bp]
                pop     di
                pop     si
                pop     bp
                ret
replace_parm_:  push    bp
                mov     bp,sp
                push    ax
                mov     ax,0038H
                call    far ptr __STK
                pop     ax
                push    si
                push    di
                sub     sp,0026H
                mov     word ptr -1cH[bp],ax
                mov     word ptr -1aH[bp],dx
                mov     word ptr -20H[bp],bx
                mov     word ptr -1eH[bp],cx
                mov     byte ptr -8H[bp],00H
                lds     bx,dword ptr +6H[bp]
                mov     ax,word ptr +4H[bx]
                mov     word ptr -18H[bp],ax
                lds     bx,dword ptr +6H[bp]
                mov     ax,word ptr +6H[bx]
                mov     word ptr -16H[bp],ax
                mov     ax,word ptr -1cH[bp]
                mov     word ptr -10H[bp],ax
                mov     ax,word ptr -1aH[bp]
                mov     word ptr -0eH[bp],ax
L15:            mov     cx,word ptr -10H[bp]
                mov     bx,word ptr -0eH[bp]
                xor     dx,dx
                xor     ax,ax
                cmp     bx,ax
                jne     short L17
                cmp     cx,dx
                jne     short L17
                jmp     near ptr L28
L16:            lds     bx,dword ptr -10H[bp]
                mov     dx,word ptr [bx]
                lds     bx,dword ptr -10H[bp]
                mov     ax,word ptr +2H[bx]
                mov     word ptr -10H[bp],dx
                mov     word ptr -0eH[bp],ax
                jmp     short L15
L17:            lds     bx,dword ptr -10H[bp]
                mov     dx,word ptr +4H[bx]
                lds     bx,dword ptr -10H[bp]
                mov     ax,word ptr +6H[bx]
                xor     cx,cx
                xor     bx,bx
                cmp     ax,bx
                jne     short L18
                cmp     dx,cx
                je      short L19
L18:            lds     bx,dword ptr -10H[bp]
                mov     bx,word ptr +4H[bx]
                lds     si,dword ptr -10H[bp]
                mov     dx,word ptr +6H[si]
                mov     ax,bx
                call    far ptr strlen_
                mov     dl,byte ptr +4H[bp]
                xor     dh,dh
                cmp     ax,dx
                je      short L20
L19:            jmp     short L21
L20:            mov     dl,byte ptr +4H[bp]
                xor     dh,dh
                push    dx
                lds     si,dword ptr -10H[bp]
                mov     si,word ptr +4H[si]
                lds     bx,dword ptr -10H[bp]
                mov     cx,word ptr +6H[bx]
                mov     bx,word ptr -20H[bp]
                mov     dx,word ptr -1eH[bp]
                mov     ax,bx
                mov     bx,si
                call    far ptr strncmp_
                test    ax,ax
                je      short L22
L21:            jmp     near ptr L27
L22:            mov     bx,word ptr -18H[bp]
                mov     dx,word ptr -16H[bp]
                mov     ax,bx
                call    far ptr strlen_
                mov     dx,ax
                mov     al,byte ptr +4H[bp]
                xor     ah,ah
                sub     dx,ax
                add     dx,0004H
                mov     ax,dx
                call    far ptr AsmAlloc_
                mov     bx,dx
                mov     word ptr -14H[bp],ax
                mov     word ptr -12H[bp],bx
                mov     dx,word ptr -20H[bp]
                mov     ax,word ptr -1eH[bp]
                sub     dx,word ptr -18H[bp]
                mov     byte ptr -6H[bp],dl
                lds     bx,dword ptr -20H[bp]
                cmp     byte ptr -1H[bx],26H
                jne     short L23
                mov     al,byte ptr -6H[bp]
                dec     byte ptr -6H[bp]
L23:            mov     dl,byte ptr -6H[bp]
                xor     dh,dh
                push    dx
                mov     si,word ptr -18H[bp]
                mov     cx,word ptr -16H[bp]
                mov     bx,word ptr -14H[bp]
                mov     dx,word ptr -12H[bp]
                mov     ax,bx
                mov     bx,si
                call    far ptr strncpy_
                mov     dl,byte ptr -6H[bp]
                xor     dh,dh
                lds     bx,dword ptr -14H[bp]
                add     bx,dx
                mov     byte ptr [bx],00H
                mov     cx,cs
                mov     dx,offset L10
                mov     si,dx
                mov     bx,word ptr -14H[bp]
                mov     dx,word ptr -12H[bp]
                mov     ax,bx
                mov     bx,si
                call    far ptr strcat_
                mov     dl,byte ptr -8H[bp]
                xor     dh,dh
                push    dx
                mov     dx,cs
                mov     bx,offset L9
                push    dx
                push    bx
                mov     dx,ss
                lea     bx,-2aH[bp]
                push    dx
                push    bx
                call    far ptr sprintf_
                add     sp,000aH
                cmp     ax,0002H
                je      short L24
                mov     cx,0094H
                mov     dx,cs
                mov     ax,offset L2
                mov     bx,ax
                mov     ax,bx
                mov     bx,cx
                jmp     far ptr InternalError_
L24:            cmp     byte ptr -2aH[bp],20H
                jne     short L25
                mov     byte ptr -2aH[bp],30H
L25:            mov     cx,ss
                lea     dx,-2aH[bp]
                mov     si,dx
                mov     bx,word ptr -14H[bp]
                mov     dx,word ptr -12H[bp]
                mov     ax,bx
                mov     bx,si
                call    far ptr strcat_
                mov     dl,byte ptr +4H[bp]
                xor     dh,dh
                lds     bx,dword ptr -20H[bp]
                add     bx,dx
                cmp     byte ptr [bx],26H
                jne     short L26
                mov     al,byte ptr +4H[bp]
                inc     byte ptr +4H[bp]
L26:            mov     al,byte ptr +4H[bp]
                xor     ah,ah
                mov     cx,word ptr -1eH[bp]
                mov     si,word ptr -20H[bp]
                add     si,ax
                mov     bx,word ptr -14H[bp]
                mov     dx,word ptr -12H[bp]
                mov     ax,bx
                mov     bx,si
                call    far ptr strcat_
                mov     ax,word ptr -14H[bp]
                lds     bx,dword ptr +6H[bp]
                mov     word ptr +4H[bx],ax
                mov     ax,word ptr -12H[bp]
                lds     bx,dword ptr +6H[bp]
                mov     word ptr +6H[bx],ax
                lds     bx,dword ptr +6H[bp]
                inc     byte ptr +8H[bx]
                mov     bx,word ptr -18H[bp]
                mov     dx,word ptr -16H[bp]
                mov     ax,bx
                call    far ptr AsmFree_

⌨️ 快捷键说明

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