Register Command Does Not Change High Order Bytes as Expected

ID Number: Q74662

3.00 3.10 3.11 3.14 | 3.00 3.10 3.11 3.12 3.50

MS-DOS | OS/2

buglist3.11 buglist3.12 buglist3.14 buglist3.50

Summary:

Using the Register Ò command in the command window of CodeView to

change the high order byte of a register by specifying AH, BH, CH, or

DH as the register will result in zero being placed in these

locations. The entire register -- AX, BX, CX, or DX -- needs to be

specified in CodeView versions 3.0, 3.1, 3.11, 3.12, 3.14, and 3.5.

More Information:

The value of a register can be changed by entering the command letter

R followed by the name of the register. CodeView will display the

current value of the register and prompt for a new value. For example,

if the current value of AX is 1111h, then the following sequence will

change the value of AX to 2211h.

>RAX

AX 1111

:2211

>

In the next sequence, AX will be changed from 1111h to OO11h.

>RAH

AH 11

:22

>

This incorrectly places 00h into AH. However, the only registers that

are listed as valid for the Register command are AX, BX, CX, DX, CS,

DS, SS, ES, SP, BP, SI, DI, IP, FL (for flags), EAX, EBX, ECX, EDX,

ESP, EBP, ESI, or EDI. The AH register is not specified as a valid

option, but CodeView incorrectly fails to generate an error when AH is

used with the Register command.

Microsoft has confirmed this to be a problem in CodeView versions 3.0,

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

will post new information here as it becomes available.

Additional reference words: buglist3.00 buglist3.10 3.00 3.10 3.50