c16.mac
资源名称:nasm-0.98.zip [点击查看]
上传用户:yuppie_zhu
上传日期:2007-01-08
资源大小:535k
文件大小:1k
源码类别:
编译器/解释器
开发平台:
C/C++
- ; 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
- %define %$firstarg 6
- %else
- %assign %$arg 4
- %define %$firstarg 4
- %endif
- %define %$procname %1
- %endmacro
- %imacro arg 0-1 2 ; used with the argument name as a label
- %00 equ %$arg
- ; we could possibly be adding some
- ; debug information at this point...?
- %assign %$arg %1+%$arg
- %endmacro
- %imacro endproc 0
- %ifnctx proc
- %error Mismatched `endproc'/`proc'
- %else
- mov sp,bp
- pop bp
- %ifdef PASCAL
- retf %$arg - %$firstarg
- %elifdef FARCODE
- retf
- %else
- retn
- %endif
- __end_%$procname: ; useful for calculating function size
- %pop
- %endif
- %endmacro