PRB: SIZE Operator Value

Last reviewed: January 9, 1995
Article ID: Q11910
The information in this article applies to:
  • Microsoft Macro Assembler for MS-DOS, versions 4.0, 5.0, 5.1, and 6.0
  • Microsoft Macro Assembler for OS/2, versions 5.1 and 6.0

SYMPTOMS

When trying to get the length of a text string, using the SIZE operator can produce undesired results. In the example below, MSG_LEN is set to a value of 1, but it seems it should be set to a value of 11:

   MSG DB 'Darth Vader'
   MSG_LEN EQU SIZE MSG

CAUSE

The value of MSG_LEN should be 1. The SIZE operator is defined to be the LENGTH * TYPE as stated in the documentation. The expression, LENGTH MSG, will be equal to 1 (when applied to a data label, the LENGTH operator returns the number of elements created by the DUP operator; otherwise it returns 1) and the expression, TYPE MSG, will be equal to 1. Therefore, the variable MSG_LEN will be equal to 1.

RESOLUTION

In Macro Assembler version 6.0, the SIZEOF operator can be used to calulate the total number of bytes allocated to a data item. In versions prior to 6.0, a simple way to calculate the value you want is as follows:

   MSG DB 'Darth Vader'
   MSG_LEN EQU $-MSG


Additional reference words: 4.00 5.00 5.10 6.00
KBCategory: kbprg kbprb
KBSubCategory: MASMLngIss


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: January 9, 1995
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.