Assembly Language Help (alang.hlp) (Table of Contents; Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software, purely for historical purposes. If you're looking for up-to-date documentation, particularly for programming, you should not rely on the information found here, as it will be woefully out of date.
Using DOS and BIOS Macros
                                             Up Contents Index Back
────────────────────────────────────────────────────────────────────────────
 
     To use DOS macros (Int 21h), include DOS.INC. To use BIOS macros
     (Int 10h), include BIOS.INC.
 
     When calling the macros, you are responsible for saving and
     restoring registers used in macros. The "Uses" field in the macro
     description identifies registers to save.
 
     Symbols must be previously defined before they can be passed as
     arguments to most of the DOS macros. Generally this means that
     data must be declared before code in the source file.
 
     Macros that accept address parameters use internal macros that
     allow you to specify addresses in several ways. The macro
     automatically identifies the type of the argument and handles it
     appropriately. For example, assume the following declarations:
 
       NPBYTE  TYPEDEF NEAR PTR BYTE
       FPBYTE  TYPEDEF FAR  PTR BYTE
 
       Msg     BYTE    "test$"
       npMsg   NPBYTE  Msg
       fpMsg   FPBYTE  Msg
 
     Given these values, the macro @ShowStr (which displays the string
     at DS:DX) has the following effects:
 
     Argument Type            Example             Value Loaded
 
     Label of byte variable   @ShowStr Msg        DS:OFFSET Msg
     Near pointer variable    @ShowStr npMsg      DS:npMsg
     Far pointer variable     @ShowStr fpMsg      fpMsg[2]:fpMsg[0]
     Constant                 @ShowStr 0          DS:0
     Pointer in register      @ShowStr si         DS:SI
     Near pointer with        @ShowStr pMsg, es   ES:pMsg
     segment
     Constant with segment    @ShowStr 0, es      ES:0
     Register with segment    @ShowStr di, es     ES:DI
 
     NOTE: If a far pointer or a segment is given, DS must be saved
           before the macro call and restored afterward. Segments may
           be given as registers, constants, or word variables.
                                    -♦-