EDX和DX是相同的寄存器吗?

时间:2013-03-15 21:19:02

标签: assembly x86

对于这个无知的问题感到抱歉,但我对x86感到很困惑。

EDX与DX的寄存器基本相同吗? 我知道EDX是32位而DX是16位。

如果我将0x1移动到EDX,那么0x1也会在DX中吗?

4 个答案:

答案 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评论中提到的高部分擦除