C ++和asm错误

时间:2016-11-21 16:32:14

标签: c++ assembly turbo-c++

是的,有人可以帮我吗?我必须在C ++和ASM中总结n个元素,一切都适用于C ++但不适用于ASM,是否有人知道如何解决问题?它计算C ++的总和并向我显示时间和总和,但在ASM中显示0.但是,有时它显示0表示C ++,有人知道这个问题是什么吗? 我使用的是TurboC ++,这是我的代码:

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
#include <time.h>




void main()
{
clrscr();
int n = 30000;
double s=0;
int a[30000];
cout << "Array has " << n << " elements 3 times summed";
for (int i=0; i<n; i++)
{
    a[i]=rand() % 10 + 1;
}
clock_t begin = clock();
for(i=0; i<n; i++)
{
    s+=a[i];
}
for(i=0; i<n; i++)
{
    s+=a[i];
}
for(i=0; i<n; i++)
{
    s+=a[i];
}
clock_t end = clock();
cout << "\nExecution time for the sum in C++  is: " << ((double)(end-begin)/CLOCKS_PER_SEC);
int tmp;
clock_t start = clock();
for (int j=0;j<3;j++){
for (i=0;i<n;i++)
    asm {
    mov ax,13
    add ax,2
}
}
clock_t stop = clock();

cout << "\nExecution time for the sum in ASM  is: " << ((double)(stop-start)/CLOCKS_PER_SEC);
cout<<"\nSum: "<< s;
getch();
}

1 个答案:

答案 0 :(得分:0)

您正在更改ax的值,但如果有ax,则无法确定C ++代码中的哪个局部变量由 mov ax,13 add ax,2 add <localvar>, ax 表示。

类似的东西:

https://

在这种情况下是合适的。