0

半径に基づいて表面積を計算する HLA アセンブリ言語プログラムを作成します。サンプルプログラムのダイアログを以下に示します。どのような方法で実行するにしても、メイン プログラムには、この問題を解決するためのプロシージャまたは関数 (少なくとも 1 つ...) の呼び出しを含める必要があります。

私は自分のコードを書きましたが、表面領域の出力として「####」を取得します。私のコードは次のとおりです。

program surfaceArea;
#include( "stdlib.hhf" );
static
radius : real32;

procedure computeSurfaceArea(r : real32); @nodisplay; @noframe;
static
returnAddress : dword;
area : real32;

begin computeSurfaceArea;

pop(returnAddress);
pop(r);
push(returnAddress);

finit();
fld( r );
fld( st0 );
fmul();

fldpi();
fld(4.0);
fmul();

fmul();

fstp( area );
stdout.putr32(area, 4, 10);
ret();
end computeSurfaceArea;

begin surfaceArea;

stdout.put("Lemme calculate the surface area of a sphere!", nl);
stdout.put("Gimme r: ");
stdin.get(radius);
stdout.put("Surface area = ");
call computeSurfaceArea;

end surfaceArea;
4

1 に答える 1