1

我刚开始学习汇编,我正在尝试修改一个字符数组。

这是我的汇编代码:

.data
data byte 'Five', 0
.code 
    Asm proc
        lea rax, data
        mov dword ptr[rax], 'Four'
        ret
    Asm endp
end 

还有我的 C++ 代码:

#include <stdio.h>
#include <conio.h>
// external function
extern "C" char* Asm();
// main function
int main()
{
    printf(Asm());
    _getch();
}

当我注释掉时mov dword ptr[rax], 'Four',结果是控制台打印:"Five"。但是,如果上面的代码未注释,结果是"ruoF",而不是我预期的结果,显然是"Four"

为什么会这样?我怎样才能让文本以正确的方向输出,而不必做一些像这样的廉价解决方法:mov dword ptr[rax], 'ruoF'

4

1 回答 1

1

您可以使用:

mov   ebx,'Four'
bswap ebx
mov   [rax],ebx

或者,在支持movbe(可以用 确认cpuid)的 Intel Atom 处理器上:

mov   ebx,'Four'
movbe [rax],ebx
于 2013-01-29T22:41:57.243 回答