ID Number: Q71890
5.10 5.10a | 5.10 5.10a
MS-DOS | OS/2
buglist5.10 buglist5.10a fixlist6.00
Summary:
The Microsoft Macro Assembler (MASM) versions 5.10 and 5.10a may
generate the following error when the TYPE operator is used in an
indirect memory operand:
error A2056: Immediate mode illegal
Microsoft has confirmed this to be a problem in MASM versions 5.10 and
5.10a. This problem was corrected in MASM version 6.00.
More Information:
The TYPE operator returns a number that represents the type of an
expression. This is normally the size of the variable in bytes.
However, using the TYPE operator in an indirect memory operand of an
instruction such as ADD causes the assembler to generate the A2056
error. The sample code below demonstrates this problem.
Instead of using the TYPE operator in this situation, a workaround for
this problem is to use an equate that is set to the same value. This
workaround is also illustrated in the following sample code (by
deleting the line where the error occurs and uncommenting the
specified line to take its place):
Sample Code
-----------
; Assemble options needed: none
.MODEL SMALL
.DATA
String DB "this is a test"
STYPE EQU TYPE(String)
.CODE
add WORD PTR [bx+10+TYPE(String)], 1
; add WORD PTR [bx+10+STYPE], 1 ;uncomment for workaround
end