Я пытаюсь найти площадь поверхности, используя это уравнение. A = 6 * a * h + 3 * sqrt (3) * a ^ 2 Я не совсем понимаю, как на самом деле работают инструкции сопроцессора.
Здесь в настоящее время используется подпрограмма
enter 8,0
mov [ebp-4],dword 2 ; Coprocessor instructions only work with
; memory addresses. So we will store the number
; 2 in a local variable on the stack (which
; is the address ebp-4).
mov [ebp-8],dword 6 ; ebp-8 = 6
;A = 6*a*h+3*sqrt(3)*a^2 where a is the base edge and h is height
fld qword[ebp+8] ; ST0 = a
fld qword[ebp+16] ; ST1 = a; ST0 = h
fmulp st1 ; ST0 = h*a
mov [ebp-8],dword 6
fild dword[ebp-8] ; ST1 = h*a; ST0 = 6
fmulp st1,st0 ; ST0 = h*a*6
fld dword[ebp+8] ; ST0 = a
fmul st0 ; ST0 = a^2
fild dword[ebp-8] ; ST1 = (a^2); ST0 = 3
fld st0 ; ST2 = (a^2); ST1 = 3; ST0 = 3
fsqrt ; ST2 = (a^2); ST1 = 3; ST0 = sqrt(3)
fmulp st1 ; ST1 = (a^2); ST0 = 3*sqrt(3)
fmulp st1 ; ST0 = ((a^2)*3*sqrt(3)
Я ищу лучшего понимания того, как я хочу поступить, и вы можете сказать мне, что я делаю неправильно