主题:[讨论]C与汇编混合编程
nihao9876
[专家分:0] 发布于 2008-11-02 15:51:00
#include <stdlib.h>
#include <stdio.h>
void far add (int,int)
{
asm {
PUSH DS
PUSH BP
MOV BP,SP
MOV AX,[BP+12]
MOV DS,AX
MOV AX,[BP+8]
ADD AX,05H
MOV SI,[BP+10]
MOV [SI],AX
POP AX
POP BP
MOV DS,AX}
}
void main()
{int a[5];
int i;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
for(i=0;i<5;i++)
printf("%d",add(a[i],5));
}
程序编译时老是出现Declaration syntax error的提示
请问是为什么啊?
请高手指教!
回复列表 (共10个回复)
沙发
雨中飞燕 [专家分:18980] 发布于 2008-11-02 16:11:00
大括号匹配吗?这么明显的错误............
板凳
nihao9876 [专家分:0] 发布于 2008-11-02 16:23:00
呵呵,这是匹配的啊!
3 楼
雨中飞燕 [专家分:18980] 发布于 2008-11-02 16:31:00
对。。是匹配。。。这位置。。。
我越来越看不懂这代码了。。。
4 楼
nihao9876 [专家分:0] 发布于 2008-11-02 17:33:00
说我是语法错误
我实在是看不出来。
会不会是函数调用的问题啊?
5 楼
scaredkinght [专家分:5310] 发布于 2008-11-02 17:49:00
关键字应该是_asm或__asm
你用的VS吗?
VS的话应该没其他问题,除了你指令有错
如果是gcc的话,指令不能这么写,它用的是AT&T格式的
6 楼
nihao9876 [专家分:0] 发布于 2008-11-02 23:37:00
呵呵,我是用TC编译的!
7 楼
scaredkinght [专家分:5310] 发布于 2008-11-03 12:50:00
呵呵,TC我还真没试过,真要用就去查下技术手册吧,我学编程的时候TC就用了一个月~~以后再也没碰过了
8 楼
nihao9876 [专家分:0] 发布于 2008-11-04 16:52:00
(*^__^*) 嘻嘻……
多谢啊!
9 楼
gtkmm [专家分:810] 发布于 2008-11-04 22:59:00
asm明显不是关键字。
如果使用编译器扩展的话,那么也应该是: __asm__
10 楼
moke9 [专家分:30] 发布于 2010-09-02 07:59:00
你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846
我来回复