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