home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Supreme Volume 6 #1
/
swsii.zip
/
swsii
/
355
/
APDEVKIT.ZIP
/
INC
/
MASM.INC
< prev
next >
Wrap
Text File
|
1992-03-08
|
4KB
|
260 lines
; /*\
;---|*|----====< MASM.INC >====----
;---|*|
;---|*| Copyright (c) 1992, 1991, Media Vision, Inc. All Rights Reserved.
;---|*|
; \*/
;---------------------------====< MASM Assembly >====--------------------------
if @codesize
@ret equ 4
FFAR equ <far>
if1
%out compiling LARGE code segments
endif
else
@ret equ 2
FFAR equ <near>
if1
%out compiling SMALL code segments
endif
endif
if @datasize
@ptr equ 4
if1
%out compiling LARGE data segments
endif
else
@ptr equ 2
if1
%out compiling SMALL data segments
endif
endif
;
; C convention stack parameters
;
wParm1 equ [bp+2+@ret+00h]
wParm2 equ [bp+2+@ret+02h]
wParm3 equ [bp+2+@ret+04h]
wParm4 equ [bp+2+@ret+06h]
wParm5 equ [bp+2+@ret+08h]
dParm1 equ [bp+2+@ret+00h]
dParm2 equ [bp+2+@ret+04h]
dParm3 equ [bp+2+@ret+08h]
dParm4 equ [bp+2+@ret+0ch]
;
; miscellaneous equates & macros
;
; external data pointer
;
externPTR macro nme ;; this macro fixes a masm 5.10 bug that
if @datasize ;; doesn't allow equate text replacement
extrn nme:dword ;; on the 'extrn' statements.
else
extrn nme:word
endif
endm
;
; external code address
;
externADDR macro nme ;; this macro fixes a masm 5.10 bug that
if @codesize ;; doesn't allow equate text replacement
extrn nme:far ;; on the 'extrn' statements.
else
extrn nme:near
endif
endm
bptr equ byte ptr
wptr equ word ptr
dptr equ dword ptr
pause equ <jmp $+2>
disable equ cli
enable equ sti
;
; NEAR branches
;
jjnz macro addr
jz $+5
jmp addr
endm
jjz macro addr
jnz $+5
jmp addr
endm
jjc macro addr
jnc $+5
jmp addr
endm
jjnc macro addr
jc $+5
jmp addr
endm
jjb macro addr
jae $+5
jmp addr
endm
jjbe macro addr
ja $+5
jmp addr
endm
jja macro addr
jbe $+5
jmp addr
endm
bne macro label
je $+5
jmp label
endm
bnz macro label
je $+5
jmp label
endm
be macro label
jne $+5
jmp label
endm
bz macro label
jne $+5
jmp label
endm
bb macro label
jae $+5
jmp label
endm
ba macro label
jbe $+5
jmp label
endm
bbe macro label
ja $+5
jmp label
endm
bae macro label
jb $+5
jmp label
endm
bc macro label
jnc $+5
jmp label
endm
bnc macro label
jc $+5
jmp label
endm
bs macro label
jns $+5
jmp label
endm
;
; multiple shift macro for 8088
;
shrm macro regmem,count
.errb <count>
.errnz count GT 16
rept count
shr regmem,1
endm
endm
shlm macro regmem,count
.errb <count>
.errnz count GT 16
rept count
shl regmem,1
endm
endm
;
; push these registers
;
PUSHEM MACRO parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9
IFNB <parm1>
push parm1
ENDIF
IFNB <parm2>
push parm2
ENDIF
IFNB <parm3>
push parm3
ENDIF
IFNB <parm4>
push parm4
ENDIF
IFNB <parm5>
push parm5
ENDIF
IFNB <parm6>
push parm6
ENDIF
IFNB <parm7>
push parm7
ENDIF
IFNB <parm8>
push parm8
ENDIF
IFNB <parm9>
push parm9
ENDIF
ENDM
;
; pop these registers
;
POPEM MACRO parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9
IFNB <parm9>
pop parm9
ENDIF
IFNB <parm8>
pop parm8
ENDIF
IFNB <parm7>
pop parm7
ENDIF
IFNB <parm6>
pop parm6
ENDIF
IFNB <parm5>
pop parm5
ENDIF
IFNB <parm4>
pop parm4
ENDIF
IFNB <parm3>
pop parm3
ENDIF
IFNB <parm2>
pop parm2
ENDIF
IFNB <parm1>
pop parm1
ENDIF
ENDM