2
我想在asm中反轉一個詞,使用堆棧(例如Testing = gnitseT)。我試圖自己做,但我的程序返回相同的字符串。幫助裝配。反向字
我的代碼:
#include <stdio.h>
int main(void) {
char *x = "Teststring";
asm (
".intel_syntax noprefix;"
"mov eax, %1;"
"xor bx,bx;"
"xor ecx,ecx;"
"pushloop:"
"mov cl, [eax];"
"cmp cl, 0;"
"jz poploop;"
"inc bx; "
"push eax;"
"inc eax;"
"jmp pushloop;"
"xor eax,eax;"
"poploop:"
"cmp bx, 0;"
"jz end;"
"pop eax;"
"inc eax;"
"dec bx;"
"jmp poploop;"
"end:"
"mov %0, eax;"
".att_syntax prefix;"
: "=r" (x)
: "r" (x)
: "eax","cl"
);
printf("x=%s", x);
return 0;
}
對於初學者來說,你不能只是切換到Intel語法編譯器的背後,否則所有替代將是錯誤的。如果您想使用intel語法,請使用'-masm = intel'命令行開關。 – Jester
其中:「Teststring」是一個字符串文字。您無法更改其內容。 – rkhb