【发布时间】:2013-01-29 22:19:01
【问题描述】:
我刚开始学习汇编,我正在尝试修改一个字符数组。
这是我的汇编代码:
.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'?
【问题讨论】:
-
你可以使用宏来反转字符串。
-
@AlexeyFrunze 你能发一个例子说明如何做到这一点吗?
-
您不想要一个便宜的解决方法,是吗? :)
-
@AlexeyFrunze 好吧,聊胜于无……
-
简单的答案:使用合适的大端CPU!
标签: string assembly 64-bit x86-64 masm