Напишите языковую программу HLA Assembly, которая вычисляет площадь поверхности на основе радиуса. Ниже приведен пример диалога программы. Однако вы решили это сделать, ваша основная программа должна включать вызов процедуры или функции (по крайней мере один ...) для решения этой проблемы.Ошибка программы HLA Surface area в выходном файле
Я написал мой код, но получить "####" в качестве выходного сигнала площади поверхности 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 (и я никогда не пойду с целью сборки х86 сборки), но: 1) Появление обратного адреса и его последующее нажатие просто для получения параметра очень уродливое. 2), если 'fmul()' не разрешает 'fmulp', кажется, что вы вычисляете' 4 * pi * pi' и оставляете вещи в стеке x87. 3) Площадь круга - 'pi * r^2'. 4) Кажется, что вы вызываете 'computeSurfaceArea' без его параметра. –
Извините, вы вычисляете площадь поверхности сферы, а не площадь круга. Не видел этого. –