home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / ddjmag / ddj9103.zip / ASM_MACR.ASC < prev    next >
Text File  |  1991-02-15  |  6KB  |  251 lines

  1. _ASSEMBLY LANGUAGE MACROS_
  2. by Ken Skier
  3.  
  4. [LISTING ONE]
  5.  
  6. ;--------------------------------------------;
  7. ;                SkiSoft Macros              ;
  8. ;                                            ;
  9. ;     Copyright (c) 1990 by SkiSoft, Inc.    ;
  10. ;            All rights reserved.            ;
  11. ;                                            ;
  12. ;                                            ;
  13. ;            Created by Ken Skier            ;
  14. ;                                            ;
  15. ;   SkiSoft, Inc.                            ;
  16. ;   1644 Massachusetts Avenue, Suite 79      ;
  17. ;   Lexington, MA 02173                      ;
  18. ;   Tel: (617) 863-1876  Fax:  (617 861-0086 ;
  19. ;                                            ;
  20. ;--------------------------------------------;
  21.  
  22.  
  23.  
  24. @       EQU     OFFSET
  25.  
  26. JSR     equ     CALL
  27. RTS     equ     RET
  28. SEC     equ     STC
  29.  
  30.  
  31. IF_  MACRO  sub, dest
  32.         CALL sub
  33.         JC dest
  34.   ENDM
  35.  
  36.  
  37. IF_NOT  MACRO  sub, dest
  38.           CALL sub
  39.          JNC dest
  40.  ENDM
  41.  
  42.  
  43.  
  44. RET_FALSE  MACRO
  45.          CLC
  46.          RET
  47.  ENDM
  48.  
  49.  
  50.  
  51. RET_TRUE  MACRO
  52.           STC
  53.          RET
  54.  ENDM
  55.  
  56.  
  57.  
  58. ;---------------------------------------;
  59. ;                                       ;
  60. ;    16-bit Register Compare macros     ;
  61. ;                                       ;
  62. ;---------------------------------------;
  63.  
  64.  
  65. IF_AX   MACRO exp, val, dest, last
  66.           %PUSHLCTL
  67.           %NOLIST
  68.           IF_REG16 AX, exp, val, dest, last
  69.  ENDM
  70.  
  71. IF_BP   MACRO exp, val, dest, last
  72.           %PUSHLCTL
  73.           %NOLIST
  74.           IF_REG16 BP, exp, val, dest, last
  75.  ENDM
  76.  
  77. IF_BX   MACRO exp, val, dest, last
  78.           %PUSHLCTL
  79.           %NOLIST
  80.           IF_REG16 BX, exp, val, dest, last
  81.  ENDM
  82.  
  83. IF_CX   MACRO exp, val, dest, last
  84.           %PUSHLCTL
  85.           %NOLIST
  86.           IF_REG16 CX, exp, val, dest, last
  87.  ENDM
  88.  
  89. IF_DX   MACRO exp, val, dest, last
  90.           %PUSHLCTL
  91.           %NOLIST
  92.           IF_REG16 DX, exp, val, dest, last
  93.  ENDM
  94.  
  95. IF_SI   MACRO exp, val, dest, last
  96.           %PUSHLCTL
  97.           %NOLIST
  98.           IF_REG16 SI, exp, val, dest, last
  99.  ENDM
  100.  
  101. IF_SP   MACRO exp, val, dest, last
  102.           %PUSHLCTL
  103.           %NOLIST
  104.           IF_REG16 SP, exp, val, dest, last
  105.  ENDM
  106.  
  107. IF_DI   MACRO exp, val, dest, last
  108.           %PUSHLCTL
  109.           %NOLIST
  110.           IF_REG16 DI, exp, val, dest, last
  111.  ENDM
  112.  
  113.  
  114. IF_REG16 MACRO reg, exp, val, dest, last
  115.           %POPLCTL       ;; Restore source-level listing parameters.
  116.         IFIDNI <val>, <@>
  117.            CMP reg, @ dest
  118.           %PUSHLCTL
  119.           %NOLIST
  120.           IFITS_ exp, last
  121.         ELSE
  122.            CMP reg, word ptr val
  123.           %PUSHLCTL
  124.           %NOLIST
  125.           IFITS_ exp, dest
  126.         ENDIF
  127.  ENDM
  128.  
  129.  
  130. ;---------------------------------------;
  131. ;                                       ;
  132. ;     8-bit Register Compare macros     ;
  133. ;                                       ;
  134. ;---------------------------------------;
  135.  
  136.  
  137. IF_AL   MACRO exp, val, dest, last
  138.           %PUSHLCTL
  139.           %NOLIST
  140.         IF_REG8 AL, exp, val, dest, last
  141.  ENDM
  142.  
  143.  
  144. IF_AH   MACRO exp, val, dest, last
  145.           %PUSHLCTL
  146.           %NOLIST
  147.         IF_REG8 AH, exp, val, dest, last
  148.  ENDM
  149.  
  150.  
  151. IF_BL   MACRO exp, val, dest, last
  152.           %PUSHLCTL
  153.           %NOLIST
  154.         IF_REG8 BL, exp, val, dest, last
  155.  ENDM
  156.  
  157. IF_BH   MACRO exp, val, dest, last
  158.           %PUSHLCTL
  159.           %NOLIST
  160.         IF_REG8 BH, exp, val, dest, last
  161.  ENDM
  162.  
  163. IF_CL   MACRO exp, val, dest, last
  164.           %PUSHLCTL
  165.           %NOLIST
  166.         IF_REG8 CL, exp, val, dest, last
  167.  ENDM
  168.  
  169. IF_CH   MACRO exp, val, dest, last
  170.           %PUSHLCTL
  171.           %NOLIST
  172.         IF_REG8 CH, exp, val, dest, last
  173.  ENDM
  174.  
  175. IF_DL   MACRO exp, val, dest, last
  176.           %PUSHLCTL
  177.           %NOLIST
  178.         IF_REG8 DL, exp, val, dest, last
  179.  ENDM
  180.  
  181. IF_DH   MACRO exp, val, dest, last
  182.           %PUSHLCTL
  183.           %NOLIST
  184.         IF_REG8 DH, exp, val, dest, last
  185.  ENDM
  186.  
  187.  
  188. IF_REG8 MACRO reg, exp, val, dest, last
  189.           %POPLCTL       ;; Restore source-level listing parameters.
  190.         IFIDNI <val>, <@>
  191.            CMP reg, @ dest
  192.           %PUSHLCTL
  193.           %NOLIST
  194.           IFITS_ exp, last
  195.         ELSE
  196.            CMP reg, byte ptr val
  197.           %PUSHLCTL
  198.           %NOLIST
  199.           IFITS_ exp, dest
  200.         ENDIF
  201.  ENDM
  202.  
  203.  
  204. IFITS_  MACRO exp, dest
  205.         %POPLCTL              ;;      Restore source-level listing parameters.
  206.         IFIDNI  <exp>, <{>    ;;  <
  207.            JB dest
  208.     elseIFIDNI  <exp>, <=>     ;;  =
  209.            JE dest
  210.     elseIFIDNI  <exp>, <}>    ;;  >
  211.            JA dest
  212.     elseIFIDNI  <exp>, <{=>   ;;  <
  213.            JBE dest
  214.     elseIFIDNI  <exp>, <{}>  ;; 
  215.            JNE dest
  216.     elseIFIDNI  <exp>, <}=>  ;;  >=
  217.            JAE dest
  218.         ENDIF
  219.   ENDM
  220.  
  221.  
  222.  
  223. IFITS  MACRO exp, dest
  224.         %PUSHLCTL
  225.         %LIST
  226.         IFIDNI  <exp>, <{>    ;;  <
  227.            JB dest
  228.     elseIFIDNI  <exp>, <=>     ;;  =
  229.            JE dest
  230.     elseIFIDNI  <exp>, <}>    ;;  >
  231.            JA dest
  232.     elseIFIDNI  <exp>, <{=>   ;;  <
  233.            JBE dest
  234.     elseIFIDNI  <exp>, <{}>  ;; 
  235.            JNE dest
  236.     elseIFIDNI  <exp>, <}=>  ;;  >=
  237.            JAE dest
  238.         ENDIF
  239.         %POPLCTL
  240.   ENDM
  241.  
  242. IF_ITS  EQU     IFITS
  243.  
  244.  
  245. ;--------------------------------------;
  246. ;                                      ;
  247. ;    End of SkiSoft macros.            ;
  248. ;                                      ;
  249. ;--------------------------------------;
  250.  
  251.