【发布时间】:2016-05-11 21:15:05
【问题描述】:
我正在使用DevCpp编译以下代码但出现问题:
#include<stdio.h>
int main(){
char s;
__asm(
"mov %ah, 1"
"int 21h"
"mov %ah,2"
"mov %dl,%al"
"int 21h"
);
return 0;
}
DevCpp编译器产生的错误是:
错误:垃圾
int 21hmov %ah' after expression Error: too many memory references formov'
我该如何解决这个问题?
【问题讨论】:
-
您的汇编程序将其视为一个字符串...您使用的是什么汇编程序?
-
在汇编代码的每一行附加一个
\n\t -
你读过这个devcpp的常见问题解答
-
如前所述,您至少需要在每个字符串的末尾添加
\n,\n\t在生成的输出中看起来更漂亮,因为它缩进了。但是即使你编译了这个int 21h,如果你生成一个Windows 可执行文件,它也不会正常工作。 Dev-CPP 是一个 32 位编译器,不针对 DOS。 GCC 可能会抱怨使用十六进制的h后缀,并且您必须使用-masm=intel进行编译才能使用intel 语法。但是int 21h会在遇到该指令时使您的 Windows 应用程序崩溃。
标签: c gcc x86 inline-assembly