Article: Q39373
Product(s): Microsoft Macro Assembler
Version(s): 5.1
Operating System(s):
Keyword(s):
Last Modified: 04-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Macro Assembler (MASM), version 5.1
-------------------------------------------------------------------------------
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 :
Technology : kbMASMsearch kbAudDeveloper kbMASM510
Version : :5.1
Solution Type : kbfix
=============================================================================