I'm writing some Real Mode code and using 32 bit registers to do so (using the 0x66 prefix).
I've been looking through Intel's manuals, and cannot find the information I am looking for. See: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html (I have skimmed Volume 1 Chapters 1-7, as well as specific instructions from Volume 2)
Does Intel guarantee specific behavior for the following code in real mode code? Is it the same as protected mode code?
mov eax, <some constant>
mov ebx, <some constant>
add ax, bx ; Are the top bits of ax zero'd, sign extended or left?
mov ax, <some constant> ; Does this leave top 16bits unchanged?
; From what I can tell, the top 16bits are unchanged, but where is this documented?
Note: I am not after how specific implementations act (ie code that checks it -- unless every implementation has always acted the same), just where Intel has documented this behavior.
Related: x86_64 registers rax/eax/ax/al overwriting full register contents
How this is different: This question relates specifically to Real Mode operation, and whether the observations from the linked question are valid in Real Mode.
Can anyone help me find where I can find this documented for real mode code?
