首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

请帮小弟我看看小弟我这个在C++里嵌入汇编的程序错在哪里

2012-03-13 
请帮我看看我这个在C++里嵌入汇编的程序错在哪里?我正在学汇编,想编程看看汇编是不是比c++快,就在devC++4.

请帮我看看我这个在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

热点排行