半径に基づいて表面積を計算するHLAアセンブリ言語プログラムを作成します。サンプルのプログラムダイアログが以下に示されています。しかし、あなたはそれを行うことに決めましたが、あなたのメインプログラムは、この問題を解決するためにプロシージャまたは関数(atleast one ...)を呼び出すことを含むべきです。表面積 の出力としてHLA出力の表面領域プログラムエラー
私は私のコードを書かなく、取得している "####" HERESに私のコード:ここ
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;
私はhlaを知らない(と私は決して目的のためにx86アセンブリをmanglingの点を得るだろうが):1)戻り値のアドレスをポップアップし、ちょうどパラメータを取得するためにそれを後押しするのは非常に醜いです。 2) 'fmul()'が 'fmulp'に解決されなければ、あなたは' 4 * pi * pi'を計算していて、x87スタックに残しているようです。3)円の面積は 'pi * r^2'です。 4)パラメータなしで 'computeSurfaceArea'を呼び出すようです。 –
申し訳ありませんが、円の面積ではなく、球の表面積を計算しています。それを見ていない。 –