home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-386-Vol-2of3.iso / b / bc_pas_1.zip / INC / MASM.INC next >
Text File  |  1992-09-23  |  5KB  |  311 lines

  1. ;$Author:   DCODY  $
  2. ;$Date:   23 Sep 1992 10:29:12  $
  3. ;$Header:   X:/sccs/inc/masm.inv   1.1   23 Sep 1992 10:29:12   DCODY  $
  4. ;$Log:   X:/sccs/inc/masm.inv  $
  5. ;
  6. ;   Rev 1.1   23 Sep 1992 10:29:12   DCODY
  7. ;changed $+5 to jjmp
  8. ;
  9. ;   Rev 1.0   15 Jun 1992 10:14:06   BCRANE
  10. ;Initial revision.
  11. ;$Logfile:   X:/sccs/inc/masm.inv  $
  12. ;$Modtimes$
  13. ;$Revision:   1.1  $
  14. ;$Workfile:   masm.inc  $ 
  15.  
  16.  
  17. ;   /*\
  18. ;---|*|----====< MASM.INC >====----
  19. ;---|*|
  20. ;---|*| Copyright (c) 1992, 1991, Media Vision, Inc.  All Rights Reserved.
  21. ;---|*|
  22. ;   \*/
  23.  
  24. ;---------------------------====< MASM Assembly >====--------------------------
  25.  
  26. if @codesize
  27.   @ret equ 4
  28.   FFAR    equ    <far>
  29.   if1
  30.     %out compiling LARGE code segments
  31.   endif
  32. else
  33.   @ret equ 2
  34.   FFAR    equ    <near>
  35.   if1
  36.     %out compiling SMALL code segments
  37.   endif
  38. endif
  39.  
  40. if @datasize
  41.   @ptr equ 4
  42.   if1
  43.     %out compiling LARGE data segments
  44.   endif
  45. else
  46.   @ptr equ 2
  47.   if1
  48.     %out compiling SMALL data segments
  49.   endif
  50. endif
  51.  
  52. ;
  53. ; C convention stack parameters
  54. ;
  55. wParm1          equ     [bp+2+@ret+00h]
  56. wParm2        equ    [bp+2+@ret+02h]
  57. wParm3        equ    [bp+2+@ret+04h]
  58. wParm4        equ    [bp+2+@ret+06h]
  59. wParm5        equ    [bp+2+@ret+08h]
  60.  
  61. dParm1        equ    [bp+2+@ret+00h]
  62. dParm2        equ    [bp+2+@ret+04h]
  63. dParm3        equ    [bp+2+@ret+08h]
  64. dParm4        equ    [bp+2+@ret+0ch]
  65.  
  66. ;
  67. ; miscellaneous equates & macros
  68. ;
  69. ; external data pointer
  70. ;
  71. externPTR macro   nme        ;; this macro fixes a masm 5.10 bug that
  72.     if @datasize        ;; doesn't allow equate text replacement
  73.     extrn    nme:dword    ;; on the 'extrn' statements.
  74.     else
  75.     extrn    nme:word
  76.     endif
  77.         endm
  78. ;
  79. ; external code address
  80. ;
  81. externADDR macro   nme        ;; this macro fixes a masm 5.10 bug that
  82.     if @codesize        ;; doesn't allow equate text replacement
  83.     extrn    nme:far     ;; on the 'extrn' statements.
  84.     else
  85.     extrn    nme:near
  86.     endif
  87.         endm
  88.  
  89. bptr        equ    byte ptr
  90. wptr        equ    word ptr
  91. dptr        equ    dword ptr
  92.  
  93. pause        equ    <jmp $+2>
  94. disable     equ    cli
  95. enable        equ    sti
  96.  
  97. ;
  98. ; NEAR branches
  99. ;
  100. jjnz    macro    addr
  101.     LOCAL    jjmp
  102.     jz    jjmp
  103.     jmp    addr
  104. jjmp:
  105.         endm
  106.  
  107. jjz    macro    addr
  108.         LOCAL   jjmp
  109.     jnz    jjmp
  110.     jmp    addr
  111. jjmp:
  112.     endm
  113.  
  114. jjc    macro    addr
  115.         LOCAL   jjmp
  116.     jnc    jjmp
  117.     jmp    addr
  118. jjmp:
  119.         endm
  120.  
  121. jjnc    macro    addr
  122.         LOCAL   jjmp
  123.     jc    jjmp
  124.     jmp    addr
  125. jjmp:
  126.     endm
  127.  
  128. jjb    macro    addr
  129.         LOCAL   jjmp
  130.     jae    jjmp
  131.     jmp    addr
  132. jjmp:
  133.     endm
  134.  
  135. jjbe    macro    addr
  136.         LOCAL   jjmp
  137.     ja    jjmp
  138.     jmp    addr
  139. jjmp:
  140.     endm
  141.  
  142. jja    macro    addr
  143.         LOCAL   jjmp
  144.     jbe    jjmp
  145.     jmp    addr
  146. jjmp:
  147.     endm
  148.  
  149. bne    macro    label
  150.         LOCAL   jjmp
  151.     je    jjmp
  152.     jmp    label
  153. jjmp:
  154.     endm
  155.  
  156. bnz    macro    label
  157.         LOCAL   jjmp
  158.     je    jjmp
  159.     jmp    label
  160. jjmp:
  161.     endm
  162.  
  163. be    macro    label
  164.         LOCAL   jjmp
  165.     jne    jjmp
  166.     jmp    label
  167. jjmp:
  168.     endm
  169.  
  170. bz    macro    label
  171.         LOCAL   jjmp
  172.     jne    jjmp
  173.     jmp    label
  174. jjmp:
  175.     endm
  176.  
  177. bb    macro    label
  178.         LOCAL   jjmp
  179.     jae    jjmp
  180.     jmp    label
  181. jjmp:
  182.     endm
  183.  
  184. ba    macro    label
  185.         LOCAL   jjmp
  186.     jbe    jjmp
  187.     jmp    label
  188. jjmp:
  189.     endm
  190.  
  191. bbe    macro    label
  192.         LOCAL   jjmp
  193.     ja    jjmp
  194.     jmp    label
  195. jjmp:
  196.     endm
  197.  
  198. bae    macro    label
  199.         LOCAL   jjmp
  200.     jb    jjmp
  201.     jmp    label
  202. jjmp:
  203.     endm
  204.  
  205. bc    macro    label
  206.         LOCAL   jjmp
  207.     jnc    jjmp
  208.     jmp    label
  209. jjmp:
  210.     endm
  211.  
  212. bnc    macro    label
  213.         LOCAL   jjmp
  214.     jc    jjmp
  215.     jmp    label
  216. jjmp:
  217.     endm
  218.  
  219. bs    macro    label
  220.         LOCAL   jjmp
  221.     jns    jjmp
  222.     jmp    label
  223. jjmp:
  224.     endm
  225.  
  226. ;
  227. ; multiple shift macro for 8088
  228. ;
  229. shrm     macro   regmem,count
  230.         .errb   <count>
  231.         .errnz  count GT 16
  232.         rept    count
  233.         shr     regmem,1
  234.         endm
  235.         endm
  236.  
  237. shlm     macro   regmem,count
  238.         .errb   <count>
  239.         .errnz  count GT 16
  240.         rept    count
  241.         shl     regmem,1
  242.         endm
  243.         endm
  244.  
  245. ;
  246. ; push these registers
  247. ;
  248. PUSHEM    MACRO    parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9
  249.     IFNB    <parm1>
  250.     push    parm1
  251.     ENDIF
  252.     IFNB    <parm2>
  253.     push    parm2
  254.     ENDIF
  255.     IFNB    <parm3>
  256.     push    parm3
  257.     ENDIF
  258.     IFNB    <parm4>
  259.     push    parm4
  260.     ENDIF
  261.     IFNB    <parm5>
  262.     push    parm5
  263.     ENDIF
  264.     IFNB    <parm6>
  265.     push    parm6
  266.     ENDIF
  267.     IFNB    <parm7>
  268.     push    parm7
  269.     ENDIF
  270.     IFNB    <parm8>
  271.     push    parm8
  272.     ENDIF
  273.     IFNB    <parm9>
  274.     push    parm9
  275.     ENDIF
  276.     ENDM
  277. ;
  278. ; pop these registers
  279. ;
  280. POPEM    MACRO    parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9
  281.     IFNB    <parm9>
  282.     pop    parm9
  283.     ENDIF
  284.     IFNB    <parm8>
  285.     pop    parm8
  286.     ENDIF
  287.     IFNB    <parm7>
  288.     pop    parm7
  289.     ENDIF
  290.     IFNB    <parm6>
  291.     pop    parm6
  292.     ENDIF
  293.     IFNB    <parm5>
  294.     pop    parm5
  295.     ENDIF
  296.     IFNB    <parm4>
  297.     pop    parm4
  298.     ENDIF
  299.     IFNB    <parm3>
  300.     pop    parm3
  301.     ENDIF
  302.     IFNB    <parm2>
  303.     pop    parm2
  304.     ENDIF
  305.     IFNB    <parm1>
  306.     pop    parm1
  307.     ENDIF
  308.     ENDM
  309.  
  310.  
  311.