对于这个无知的问题感到抱歉,但我对x86感到很困惑。
EDX与DX的寄存器基本相同吗? 我知道EDX是32位而DX是16位。
如果我将0x1移动到EDX,那么0x1也会在DX中吗?
答案 0 :(得分:18)
[76543210 76543210 76543210 76543210 76543210 76543210 76543210 76543210] bits
[ RDX ]
[ EDX ]
[ DX ]
[ DH ][ DL ]
答案 1 :(得分:10)
DX只是EDX的低16b:)
mov EDX, 0x1; --> DX = 0x1
mov EDX, 0x12345678; --> DX = 0x5678
答案 2 :(得分:3)
此外,如果您使用的是64位系统,则EDX是RDX寄存器的低32位,即64位寄存器。
答案 3 :(得分:0)
您可以将其视为指针:
long theRealRDX;
long * rdx = &theRealRDX;
int * edx = (int*)&theRealRDX;
short int * dx = (short int*)&theRealRDX;
char * dl = (char*)&theRealRDX;
除了nrz评论中提到的高部分擦除