diff options
author | H. Peter Anvin <hpa@zytor.com> | 2002-04-30 20:52:49 +0000 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2002-04-30 20:52:49 +0000 |
commit | 76690a12ad212d1f77cd1f71d7ac5a9de6eaefb6 (patch) | |
tree | 6d1fe5322184b3e53a9378ce65f6a95f05b59f28 /misc/c16.mac | |
parent | 6768eb71d8debde65562619c938b997aea1bd9f9 (diff) | |
download | nasm-76690a12ad212d1f77cd1f71d7ac5a9de6eaefb6.tar.gz nasm-76690a12ad212d1f77cd1f71d7ac5a9de6eaefb6.tar.bz2 nasm-76690a12ad212d1f77cd1f71d7ac5a9de6eaefb6.zip |
NASM 0.96
Diffstat (limited to 'misc/c16.mac')
-rw-r--r-- | misc/c16.mac | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/misc/c16.mac b/misc/c16.mac new file mode 100644 index 0000000..86e6bf9 --- /dev/null +++ b/misc/c16.mac @@ -0,0 +1,37 @@ +; NASM macro set to make interfacing to 16-bit programs easier -*- nasm -*- + +%imacro proc 1 ; begin a procedure definition +%push proc + global %1 +%1: push bp + mov bp,sp +%ifdef FARCODE PASCAL ; arguments may start at bp+4 or bp+6 +%assign %$arg 6 +%else +%assign %$arg 4 +%endif +%define %$procname %1 +%endmacro + +%imacro arg 0-1 2 ; used with the argument name as a label + equ %$arg +%assign %$arg %1+%$arg +%endmacro + +%imacro endproc 0 +%ifnctx proc +%error Mismatched `endproc'/`proc' +%else + mov sp,bp + pop bp +%ifdef PASCAL + retf %$arg +%elifdef FARCODE + retf +%else + retn +%endif +__end_%$procname: ; useful for calculating function size +%pop +%endif +%endmacro |