Ошибка программы HLA для поверхности на выходе

Напишите программу на языке ассемблера 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;

1 ответ

Смотрите здесь: stdout.putr32(область, 4, 10);

К сожалению, вы не указали достаточную ширину поля для выходного текста (пробел для начальных чисел или десятичного числа) для правильного вывода значения.

stdout.putr32 (r: real32; ширина:uns32; decpts:uns32); Первым параметром этих процедур является значение с плавающей запятой, которое вы хотите напечатать. Размер этого параметра должен соответствовать имени процедуры. Второй параметр определяет ширину поля для выходного текста. Как и ширина при работе с целочисленным значением, эта ширина - это число позиций символов, которое потребуется числу, когда процедура отобразит его. Не забудьте указать позицию как для знака числа, так и для десятичной точки. Третий параметр указывает количество позиций печати, которые следует размещать после десятичной точки. В качестве примера, stdout.putr32( pi, 10, 4); отображает значение _ _ _ _ 3.1416, где подчеркивания используются для представления начальных пробелов.

Надеюсь, это поможет!

Другие вопросы по тегам