多項式の値を計算するプロシージャをアセンブラで作成する必要があります。私は2つのファイルを持っています:
- Cソースファイル
- ASMソースファイル
Cファイル:
#include <stdio.h>
#include <stdlib.h>
double func(double,double);
int main()
{
double x=3;
double y=2;
printf("%f\n",func(x,y) );
return 0;
}
ASMファイル:
.386 .model flat、c .stack 100h
.DATA
var DW 27
.code
func PROC a:QWORD, b:QWORD
finit
fld b
fld b
fmul
fld b
fmul
fld a
fld a
fmul
fld a
fmul
mov ax, [var]
push ax
fmul
fdiv
fwait
RET
func ENDP
end
この段階で達成したいのは、(b ^ 3)/(27 * a ^ 3)の値です。おそらくmovとpushが問題の原因です。
その結果、私は-1.#IND00
私はWindowsを使用しており、VisualStudio2012コンパイラを使用しています。コンパイルには、VS2012コマンドラインと次のbatファイルを使用します。
del *.obj
cl -c poly.c
ml -c poly.asm
cl poly.obj poly.obj
また:
3つ以上の引数を持つプロシージャを作成する方法はありますか?