0

编写一个基于半径计算表面积的 HLA 汇编语言程序。示例程序对话框如下所示。不管你决定怎么做,你的主程序应该包括调用一个过程或函数(至少一个......)来解决这个问题。

我已经编写了我的代码,但得到“####”作为表面积的输出,这是我的代码:

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

1

看这里:stdout.putr32(area, 4, 10);

不幸的是,您没有为输出文本提供足够的字段宽度(前导数字或小数的空格)以正确打印值。

stdout.putr32(r:real32;宽度:uns32;decpts:uns32);这些过程的第一个参数是您希望打印的浮点值。此参数的大小必须与过程名称匹配。第二个参数指定输出文本的字段宽度。与使用整数值时的宽度一样,此宽度是该数字在程序显示时所需的字符位置数。记住要包括数字符号和小数点的位置。第三个参数指定要放置在小数点后的打印位置数。例如,stdout.putr32(pi, 10, 4); 显示值 _ _ _ _ 3.1416,其中下划线用于表示前导空格。

我希望这有帮助!

于 2016-08-15T00:57:45.910 回答