0

私にはタスクがあります-関数の6つの結果を計算します(Y =(20 * x)/(5 * x2 – 8,5))x-1から開始し、各計算は4ずつ増加する必要があります(1、5、9 .. )。

私はいくつかのコードを書いていますが、ループを作成してデータを配列に入れる方法を理解していません。すべての操作は asm で行う必要があります - ループして配列に入れます。1 回の反復 - 配列内の 1 つの要素

私のコードがあります:

int main()
{
float REZ[6];
int x = 1;
int A =5;
int B=20;
float C = 8.5;
int D =2000;
int increment = 4;
float part;
float val;

_asm{
finit   
fild x
fimul x
fimul A
fsub C
fstp part
fild D
fimul x
fdiv part
fstp val
}

}

4

1 に答える 1

1

組み立て時間はとっくに過ぎていますが、やってみます。アセンブリのループは、ラベルを定義し、このラベルにジャンプすることによって行われます。ループによっては、条件付きジャンプです (いくつかの比較後)。

疑似アセンブリ:

label1:
    ...
    cmp x, 6
    jlt label1

詳細については、X86 アセンブリ/制御フローを参照してください。

または無条件ジャンプ:

label1:
    ...
    jmp label1

アセンブリについて学ぶもう 1 つの方法は、コンパイラの出力を見ることです。例を参照してください。

int x, y;
for (x = 0; x < 6; ++x)
    y = (20 * x) / (5 * x2 – 8,5);

アセンブリ出力で停止するように gcc に指示します。

gcc -S loop.c

結果を探しますloop.s

于 2012-11-03T16:39:07.010 に答える