Microsoft KB Archive/39373

= FIX: Warning A4057 Generated Instead of Error A2019 =

Article ID: 39373

Article Last Modified on 10/22/2003

-

APPLIES TO


 * Microsoft Macro Assembler 5.1 Standard Edition

-



This article was previously published under Q39373



SYMPTOMS
The code below is correctly flagged as an error in the Microsoft Macro Assembler (MASM) versions 5.0, 6.0, 6.0a, 6.0b, but MASM 5.1 generates a warning and incorrect code.

The following is the error generated by MASM 5.0

A2019: Wrong type of register

Macro Assembler Version 5.1 fails to generate an error on the MOV instruction using the 8-bit registers (AH, BH, CH, DH, AL, BL, CL, DL) with segment registers (CS, DS, ES, SS). Instead, the following warning is generated

A4057: Illegal size for operand

The code generated is also in error. Each of the (8-bit) byte registers maps to the set (SP, DI, BP, SI, AX, BX, CX, DX).

The following is the error generated by MASM 6.0

A2024: invalid operand size for instruction



STATUS
Microsoft has confirmed this to be a problem in MASM version 5.1. This problem was corrected in MASM version 6.0.



MORE INFORMATION
The following sample code demonstrates the problem:

Sample Code:
;Assemble options needed: none

_TEXT  segment word public 'CODE' ; instruction in source    Generated code shown in listing mov    ds, ah          ; mov   ds, sp        mov     ds, bh          ; mov   ds, di        mov     ds, ch          ; mov   ds, bp        mov     ds, dh          ; mov   ds, si

mov    ds, al          ; mov   ds, ax        mov     ds, bl          ; mov   ds, bx        mov     ds, cl          ; mov   ds, cx        mov     ds, dl          ; mov   ds, dx

mov    ah, 4ch int    21h _TEXT  ends end

Additional query words: 5.10 buglist5.10 fixlist6.00

Keywords: kbfix KB39373

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.