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.
Variable Length
                                             Up Contents Index Back
────────────────────────────────────────────────────────────────────────────
 
  Syntax:   LENGTHOF variable
 
            SIZEOF variable
 
            SIZEOF type
 
            LENGTH expression
 
            SIZE expression
 
  See also: WIDTH, TYPE, SIZESTR, DUP, BYTE, MACRO,
            MASM 5.1 Compatibility
 
  Description:
 
     The LENGTHOF operator returns the number of data items allocated
     for <variable>. The SIZEOF operator returns the total number of
     bytes allocated for <variable> or the size of <type> in bytes. For
     variables, SIZEOF is equal to the value of LENGTHOF times the
     number of bytes in each element.
 
     The LENGTH and SIZE operators are allowed for compatibility with
     previous versions of the assembler. When applied to a data label,
     the LENGTH operator returns the number of elements created by the
     DUP operator; otherwise it returns 1. When applied to a data
     label, the SIZE operator returns the number of bytes allocated by
     the first initializer at the <variable> label.
 
     In MASM 5.1, the LENGTH operator, when applied to a record type, returns
     the total number of bits in a record definition. In MASM 6.1, the state-
     ment LENGTH <recordName> returns error A2143. MASM 6.1 uses the
     SIZEOF operator to return information about records.
 
     With OPTION M510, you can apply the LENGTH and SIZE operators to any
     label. For a code label, SIZE returns a value of 0FFFFh for NEAR and
     0FFFEh for FAR. LENGTH always returns a value of 1. For strings, SIZE
     and LENGTH both return 1.
 
     Without OPTION M510, SIZE returns values of 0FF01h, 0FF02h, 0FF04h,
     0FF05h, and 0FF06h for SHORT, NEAR16, NEAR32, FAR16, and FAR32 labels,
     respectively. LENGTH returns 1 except when used with DUP, in which case
     it returns the outermost count. For arrays initialized with DUP, SIZE
     returns the length multiplied by the size of the type.
 
     The LENGTHOF and SIZEOF operators in MASM 6.1 handle arrays much more
     consistently. These operators return the number of data items and the
     number of bytes in an initializer.
                                    -♦-