I'm using MASM32 SDK verison 10, and I have a problem with highword:
val dd 10101011b
mov val, HIGHWORD val
error A2105: HIGH and LOW require immediate operands
Can some body help me?
i have never used HIGHWORD
but, you can't do memory to memory MOV that way
try getting the value into a register first
movzx eax,word ptr val+2 ;same as HIGHWORD ?
mov word ptr val,ax
i think that's what you are trying to do :P
and about lowword ? I don't know exactly what I have to do. Can you show me ?
movzx eax, word ptr val is the low word
movzx eax, word ptr val+2 is the high word
boydtbk,
I prefer to write it as
movzx eax, word ptr val+0 ;is the low word
movzx eax, word ptr val+2 ;is the high word
just for clarity.
The typical usage for LOWWORD/HIGHWORD is as follows
= DEADBEEF val EQU 0DEADBEEFh
0000 B8 BEEF mov ax,LOWWORD val
0003 BA DEAD mov dx,HIGHWORD val
They are designed to handle immediate values (ie EQU, or simple constants/math)
As for style, I'd prefer this if you are pulling high/low values from memory
value dd 0DEADBEEFh
;...
movzx eax, word ptr value[0] ; is the low word
movzx edx, word ptr value[2] ; is the high word