【发布时间】:2011-06-09 22:11:56
【问题描述】:
#include <stdio.h>
#define OPT //define for assembly
int main()
{
char chr;
for(chr = 'A' ; chr <= 'Z' ; chr++)
{
#ifdef OPT
__asm
{
lea eax,chr
push eax
mov eax, putchar
call eax
pop ebx
}
#endif
#ifndef OPT
putchar(chr);
#endif
}
return 0;
}
在使用汇编代码时,所发生的只是打印一个随机的垃圾字符。注意这是 intel 语法。
还有: 我正在学习内联汇编,你将如何获取被调用函数的返回值(通过 mov eax,func 然后调用 eax 或 equiv?)
【问题讨论】:
-
call putchar有什么问题? -
TonyK,你不能调用 putchar,因为 putchar 是一个变量。我认为这主要是出于调试目的,可以在 C 编译器设置中打开或关闭。
-
@Aleš Keprt:这对我来说是新的!