读书人

请帮小弟我看看小弟我这个在C++里嵌入

发布时间: 2012-03-13 11:21:12 作者: rapoo

请帮我看看我这个在C++里嵌入汇编的程序错在哪里?
我正在学汇编,想编程看看汇编是不是比c++快,就在devC++ 4.9.9.2里弄了这个程序,但是编译无法通过,程序如下:

#include <iostream>
#include <cstdlib>
#include <ctime>

//测试汇编和c++哪个快
using namespace std;
int main()
{
int y = 0;
clock_t begin,end;
double result[2];
long i=0,times;
int A = 100,B = 200,C= 300;
times = 10000000;
//c++的A=A+B+C
begin = clock();
for(i = 0;i <times;i++)
{
A = A+B+C;
}
end = clock();
result[0] = (double)(end-begin)/CLOCKS_PER_SEC;
//汇编的A=A+B+C
begin = clock();
for(i = 0;i <times;i++)
{
//以下是照书copy的.
asm{push ax
mov ax,A
add ax,B
add ax,C
mov A,ax
pop ax
}
/*如果改成下面这样(花括号改成小括号)
asm(push ax
mov ax,A
add ax,B
add ax,C
mov A,ax
pop ax
)
还是出错*/
}
end = clock();
result[1] = (double)(end-begin)/CLOCKS_PER_SEC;
cout < < "结果为: " < <endl < < "c++: " < <result[0] < < "secnods " < <endl


< < "汇编: " < <result[1] < < "seconds " < <endl;
system( "pause ");
return 0;
}

编译时出错:
D:\program\code\myclock2.cpp In function `int main() ':
27 D:\program\code\myclock2.cpp expected `( ' before '{ ' token
27 D:\program\code\myclock2.cpp expected asm body before '{ ' token
27 D:\program\code\myclock2.cpp `push ' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
27 D:\program\code\myclock2.cpp expected `; ' before "ax "

所有的错误全和asm有关,我试了一下把asm的 "{} "改成 "() ",就像上面注释里那样,还是报错:
D:\program\code\myclock2.cpp In function `int main() ':
27 D:\program\code\myclock2.cpp expected asm body before "push "
27 D:\program\code\myclock2.cpp `push ' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
27 D:\program\code\myclock2.cpp expected `; ' before "ax "

少了一条,请问是我的程序有问题还是其他原因?谢谢啊!

[解决办法]
asm{push ax
mov ax,A
add ax,B
add ax,C
mov A,ax
pop ax
}
改成
_asm
{
push ax
mov ax,A
add ax,B
add ax,C
mov A,ax
pop ax
}
这样试试

[解决办法]
或者直接
_asm push ax
_asm mov ax,A
_asm add ax,B
_asm add ax,C
_asm mov A,ax
_asmpop ax
[解决办法]
汇编语句后面都加上“;”试试!
[解决办法]
我没有装VC,在Turbo C++下,这样改就可以运行了:
_asm{
push ax
mov ax,word ptr A
add ax,word ptr B
add ax,word ptr C
mov word ptr A,ax
pop ax
}
[解决办法]
向楼主推荐一个不错的C/C++编译器:Turbo C/C++ for windows集成实验与学习环境7.0,很多地方都可以下载,这个编译器里面有非常全面帮助资料,用起来很方便!
[解决办法]
对,这个东西不错,
如果想从事WIN32开发的话,还是建议楼主用VC或VC.NET

读书人网 >汇编语言

热点推荐