Являются ли EDX и DX одним и тем же регистром?

извините за невежественный вопрос,но я довольно смущен x86.

является ли EDX по существу тем же регистром, что и DX? Я понимаю, что EDX - 32 бит, а DX-16 бит.

Если я перемещу 0x1 в EDX, будет ли 0x1 также находиться в DX?

4 ответов


DX-это просто Нижний 16b EDX:)

mov EDX, 0x1;         --> DX = 0x1
mov EDX, 0x12345678; --> DX = 0x5678

[76543210 76543210 76543210 76543210 76543210 76543210 76543210 76543210] bits
[                                  RDX                                  ]
                                    [                EDX                ]                 
                                                      [       DX        ]
                                                      [  DH    ][   DL  ]

кроме того, если вы находитесь в 64-битной системе, EDX-это низкий 32-бит регистра RDX, который является 64-битным регистром.


вы можете думать об этом как указатели:

long theRealRDX;
long *     rdx = &theRealRDX;
int  *     edx = (int*)&theRealRDX;
short int * dx = (short int*)&theRealRDX;
char *      dl = (char*)&theRealRDX;

за исключением стирания высокой части, упомянутого в комментарии nrz