c16.mac
上传用户:yuppie_zhu
上传日期:2007-01-08
资源大小:535k
文件大小:1k
源码类别:

编译器/解释器

开发平台:

C/C++

  1. ; NASM macro set to make interfacing to 16-bit programs easier -*- nasm -*-
  2. %imacro proc 1 ; begin a procedure definition
  3. %push proc
  4.   global %1
  5. %1:   push bp
  6.   mov bp,sp
  7. %ifdef FARCODE PASCAL ; arguments may start at bp+4 or bp+6
  8. %assign %$arg 6
  9. %else
  10. %assign %$arg 4
  11. %endif
  12. %define %$procname %1
  13. %endmacro
  14. %imacro arg 0-1 2 ; used with the argument name as a label
  15.   equ %$arg
  16. %assign %$arg %1+%$arg
  17. %endmacro
  18. %imacro endproc 0
  19. %ifnctx proc
  20. %error Mismatched `endproc'/`proc'
  21. %else
  22.           mov sp,bp
  23.           pop bp
  24. %ifdef PASCAL
  25.           retf %$arg
  26. %elifdef FARCODE
  27.   retf
  28. %else
  29.   retn
  30. %endif
  31. __end_%$procname: ; useful for calculating function size
  32. %pop
  33. %endif
  34. %endmacro