我刚刚开始学习汇编,我正在尝试修改一个字符数组。
这是我的汇编代码:
.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”,而不是我所期望的,显然是“4”。
为什么会发生这种情况?如何让文本以正确的方向输出,而不必执行一些廉价的解决方法,如下所示:mov dword ptr[rax], 'ruoF'
?
最佳答案
您可以使用:
mov ebx,'Four'
bswap ebx
mov [rax],ebx
或者,在支持 movbe
的 Intel Atom 处理器上(可以通过 cpuid
确认):
mov ebx,'Four'
movbe [rax],ebx
关于string - 修改字符数组,修改部分向后显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14593122/