MSM9111002: MASM 6.0 Always Uses EAX Register with BSWAP

ID Number: Q78393

6.00 | 6.00

MS-DOS | OS/2

buglist6.00 fixlist6.00a

Summary:

PROBLEM ID: MSM9111002

SYMPTOMS

The Microsoft Macro Assembler (MASM) version 6.0 always generates

code that uses the EAX register with the BSWAP instruction.

Attempting to use another register with the BSWAP instruction

assembles without error; however, the code generated uses the EAX

register.

RESOLUTION

A workaround for this problem is to embed the opcode (operation

code) for the instruction directly in the code. The sample code

below demonstrates this method.

STATUS

Microsoft has confirmed this to be a problem in MASM version 6.0.

This problem was corrected in MASM version 6.0a.

More Information:

Sample Code

-----------

; Assemble options needed : none

.MODEL small, os_dos

.486

.STACK

.CODE

start: bswap eax ; Code generated: 66| 0F C8 (bswap eax)

bswap ebx ; Code generated: 66| 0F C8 (bswap eax)

BYTE 66h ; Embed a bswap ebx in the code

WORD 0CB0Fh

bswap ecx ; Code generated: 66| 0F C8 (bswap eax)

BYTE 66h ; Embed a bswap ecx in the code

WORD 0C90Fh

bswap edx ; Code generated: 66| 0F C8 (bswap eax)

BYTE 66h ; Embed a bswap edx in the code

WORD 0CA0Fh

END start

Additional reference words: 6.00