FIX: Upper Half of 32-bit Registers, GS, and FS CorruptLast reviewed: September 16, 1997Article ID: Q87548 |
4.00 4.01 4.05 | 4.00 4.01
MS-DOS | WINDOWSkbtool kbcode kbbuglist kbfixlist The information in this article applies to:
SYMPTOMSWhen single-stepping or tracing through code in Microsoft CodeView versions 4.0, 4.01, and 4.05, the lower half of the 32-bit registers (eax, ebx, edi, etc.) is always preserved, but the upper half may be corrupted. Other 386- specific registers, such as the gs and fs registers, may also be corrupted. This problem also occurs when animating. This problem does not occur if the instructions are not executed one at a time.
STATUSMicrosoft has confirmed this to be a problem in CodeView version 4.0, 4.01, and 4.05. This problem was corrected in CodeView version 4.1.
MORE INFORMATIONThe following sample code can be used to demonstrate this problem. The ebx register will get the value FFFFFFFF, but single-stepping on the NOP will change the value to 0000FFFF.
Sample Code; Assemble options needed: /Zi _text SEGMENT para public 'code' ASSUME cs:_text, ds:_textmain: .386 MOV ebx, 0ffffffffh NOP MOV ah, 4ch INT 21h_text ENDS stack SEGMENT para stack 'stack' DW 64 dup( ? )stack ENDS
END main |
Additional reference words: 4.00
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |