将汇编指令翻译成 C++
Translate assembly instructions to c++
我在将以下程序集翻译成 c++ 时遇到问题
MOVZX EAX, DX
其中EDX为32位寄存器。我需要获得最低的 16 位(DX)。
我试过以下方法:
unsigned edx = 0x123ABCDE;
unsigned dx = (edx>>16) & 0xff;
我希望得到一个存储在 dx 中的 BCDE 值,但是有点不对。
如有任何帮助,我们将不胜感激。
让我们逐步分析您的代码。
unsigned edx = 0x123ABCDE;
没有什么不寻常的。
让我们按照评估的顺序分解下一个语句。
(edx >> 16)
-- 右移16位。
这是右移 2 个字节或 4 个十六进制数字。
答案应该是 0x123A。
现在,让我们保留最右边的 8 位(与 0xFF 相与):
0x123A & 0xFF == 0x3A
结果应该是变量dx
中的0x3A。
我在将以下程序集翻译成 c++ 时遇到问题
MOVZX EAX, DX
其中EDX为32位寄存器。我需要获得最低的 16 位(DX)。
我试过以下方法:
unsigned edx = 0x123ABCDE;
unsigned dx = (edx>>16) & 0xff;
我希望得到一个存储在 dx 中的 BCDE 值,但是有点不对。
如有任何帮助,我们将不胜感激。
让我们逐步分析您的代码。
unsigned edx = 0x123ABCDE;
没有什么不寻常的。
让我们按照评估的顺序分解下一个语句。
(edx >> 16)
-- 右移16位。
这是右移 2 个字节或 4 个十六进制数字。
答案应该是 0x123A。
现在,让我们保留最右边的 8 位(与 0xFF 相与):
0x123A & 0xFF == 0x3A
结果应该是变量dx
中的0x3A。