编写一个HLA汇编语言程序,根据半径计算表面积。示例程序对话如下所示。无论你决定这样做,你的主程序应该包括调用一个过程或函数(至少一个...)来解决这个问题。
我已经编写了我的代码但得到了#34; ####"作为表面积的输出 继承我的代码:
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;
答案 0 :(得分:1)
看这里: stdout.putr32(area,4,10);
遗憾的是,您没有为输出文本(前导数字和小数的空间)提供足够的字段宽度,以便正确打印值。
stdout.putr32(r:real32; width:uns32; decpts:uns32); 这些过程的第一个参数是您要打印的浮点值。此参数的大小必须与过程名称匹配。第二个参数指定输出文本的字段宽度。与使用整数值时的宽度一样,此宽度是过程显示该数字时所需的字符位置数。请记住包括数字符号和小数点的位置。第三个参数指定小数点后放置的打印位置数。 举个例子, stdout.putr32(pi,10,4); 显示值 _ _ _ _ 3.1416 下划线用于表示前导空格。
我希望这有帮助!