GNU Info

Info Node: (nasm.info)Section 5.3

(nasm.info)Section 5.3


Next: Section 5.4 Prev: Section 5.2.1 Up: Chapter 5
Enter node , (file) or (file)node

5.3. `ABSOLUTE': Defining Absolute Labels
=========================================

   The `ABSOLUTE' directive can be thought of as an alternative form of
`SECTION': it causes the subsequent code to be directed at no physical
section, but at the hypothetical section starting at the given absolute
address. The only instructions you can use in this mode are the `RESB'
family.

   `ABSOLUTE' is used as follows:

     absolute 0x1A
     
         kbuf_chr    resw    1
         kbuf_free   resw    1
         kbuf        resw    16

   This example describes a section of the PC BIOS data area, at segment
address 0x40: the above code defines `kbuf_chr' to be 0x1A, `kbuf_free'
to be 0x1C, and `kbuf' to be 0x1E.

   The user-level form of `ABSOLUTE', like that of `SECTION', redefines
the `__SECT__' macro when it is invoked.

   `STRUC' and `ENDSTRUC' are defined as macros which use `ABSOLUTE'
(and also `__SECT__').

   `ABSOLUTE' doesn't have to take an absolute constant as an argument:
it can take an expression (actually, a critical expression: see *Note
Section 3.8::) and it can be a value in a segment. For example, a TSR
can re-use its setup code as run-time BSS like this:

             org     100h               ; it's a .COM program
     
             jmp     setup              ; setup code comes last
     
             ; the resident part of the TSR goes here
     setup:
             ; now write the code that installs the TSR here
     
     absolute setup
     
     runtimevar1     resw    1
     runtimevar2     resd    20
     
     tsr_end:

   This defines some variables `on top of' the setup code, so that
after the setup has finished running, the space it took up can be
re-used as data storage for the running TSR. The symbol `tsr_end' can
be used to calculate the total size of the part of the TSR that needs
to be made resident.


automatically generated by info2www version 1.2.2.9