Microsoft KB Archive/39373
Article ID: 39373
Article Last Modified on 10/22/2003
- Microsoft Macro Assembler 5.1 Standard Edition
This article was previously published under Q39373
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
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
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
Microsoft has confirmed this to be a problem in MASM version 5.1. This problem was corrected in MASM version 6.0.
The following sample code demonstrates the problem:
;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