配列から最小数を見つけるために、C++ とアセンブリ言語 (8086) で混合プログラムに取り組んでいます。これが私のコードです
#include<iostream>
#include<conio.h>
using namespace std;
void main()
{
__int16 a[5],x,y,res;
int i,j;
y=999;
cout<<"\n Enter 5 Numbers:";
for(i=0;i<5;i++)
{
cin>>a[i];
}
_asm{
mov bx,y
}
//Finding smallest
for(i=0;i<5;i++)
{
x=a[i];
_asm{
mov ax,x
cmp ax,bx
jge nxt
mov bx,ax
nxt:
}
}
_asm{
mov res,bx;
}
cout<<"\n Smallest Element:"<<res;
getch();
}
上記のコードは Visual Studio 2010 で記述されており、正常に動作しているようです。しかし、Turbo c++ の同じコードを更新すると (つまり、"iostream" を "iostream.h" に変更し、"using namespace std;" を削除し、"__int16" を "int" に変更するなど)、機能しません。実行後に生成される答えは間違っています。
これが私のTC ++プログラムです
#include<iostream.h>
#include<conio.h>
void main()
{
int a[5],x,y,res;
int i,j;
y=999;
cout<<"\n Enter 5 Numbers:";
for(i=0;i<5;i++)
{
cin>>a[i];
}
_asm{
mov bx,y
}
//Finding smallest
for(i=0;i<5;i++)
{
x=a[i];
_asm{
mov ax,x
cmp ax,bx
jge nxt
mov bx,ax
}
nxt:
}
_asm{
mov res,bx;
}
cout<<"\n Smallest Element:"<<res;
getch();
}
TC++ と Visual Studio 10 が同じ答えを出さないのはなぜですか?