CV9112002: CodeView Will Disassemble CMPXCHG Incorrectly

ID Number: Q79142

3.00 3.10 3.11 3.14 | 3.00 3.10 3.11 3.12

MS-DOS | OS/2

buglist3.11 buglist3.12 buglist3.14 buglist3.00 buglist3.10

Summary:

PROBLEM ID: CV9112002

SYMPTOMS

Microsoft CodeView versions 3.0, 3.1, 3.11, 3.12, and 3.14 does not

disassemble the CMPXCHG instruction correctly. A properly encoded

CMPXCHG instruction is shown in mixed source and assembly as ???

possibly followed by random instructions.

STATUS

Microsoft has confirmed this to be a problem in CodeView versions

3.0, 3.1, 3.11, 3.12, and 3.14. We are researching this problem and

will post new information here as it becomes available.

More Information:

The CMPXCHG instruction is an assembly instruction available only on

80486 processors.

Sample Code

-----------

; Assemble options needed: none

.486p

_TEXT SEGMENT USE16 'CODE'

start:

; The following define bytes are taken by CodeView

; 3.14 as the "CMPXCHG BX,CX" instruction, but it will

; cause an invalid opcode error when run.

DB 00FH,0A7H,0CBH ;CodeView thinks this is

;CMPXCHG BX,CX

; The following instructions are correctly assembled by

; Macro Assembler 6.00 but are not recognized by

; CodeView 3.14.

CMPXCHG bx,cx ;Correct opcode

;This generates 0F B1 CB

MOV ax,4C00H

INT 21h

_TEXT ENDS

END start

Additional reference words: 3.00 3.10