我正在使用MASM。通过“mov”指令编写的字符串
我有一个64位的变量,我需要从一个寄存器的32位输入存储到64位变量的下半部分。
首先,我移动下半部的地址到寄存器:
mov ebx, OFFSET num1+32
然后,我使用PTR
指令到32位的输入存储到变量的第二半:
mov DWORD PTR [ebx], eax
但是,每当第二行运行时,我在“.data”中声明的一个字符串会被覆盖写入内存中。它从:
45 6E 74 65 72 20 46 69 72 73 74 20 48 61 6C 66 20 6F 66 20
到
45 6E 74 65 72 20 46 69 bb bb bb bb 48 61 6c 66 20 6f 66 20
改变的东西是bb bb bb bb
如上所示。
bb bb bb bb
是我在上面两行之前输入要存储在64位变量中的内容。
任何意见表示赞赏。由于
非常感谢,先生!那正是我所期待的。我完全忘记了DWORD以字节移动而不是(偏移量)的位。 – user2420929
@ user2420929乐于助人。 – Aaron