Другие языки программирования и технологии

срочно помогите написать программу на ассемблере вычисляющую R. R=x2+y2, где x=a+b-c, y=b*c-a. a,b,c вводятся с клавы

Консольное 32-разрядное приложение Windows, процессор i80386/387 с сопроцессором. Компилятор MASM + SDK masm32.

.386
.model flat, stdcall
option casemap: none

include windows.inc
include kernel32.inc
include user32.inc
include masm32.inc
includelib kernel32.lib
includelib user32.lib
includelib masm32.lib

.stack 200h

.data
TextA db 'Введите A: ',0
TextB db 'Введите B: ',0
TextC db 'Введите C: ',0
Result db 'Результат R = ',0

.data?
hStdIn dd ?
hStdOut dd ?
varA dq ?
varB dq ?
varC dq ?
varR dq ?
Buff db 24 dup (?)

.code
Print proc
push ebp
mov ebp,esp
invoke lstrlenA,[ebp+8]
invoke WriteConsole,hStdOut,[ebp+8],eax,0,0
pop ebp
ret 4
Print endp

InputFloat proc
invoke ReadConsole,hStdIn,addr Buff+4,20,addr Buff,0
invoke StrToFloat,addr Buff+4,edi
ret
InputFloat endp

N69950314:
finit
invoke GetStdHandle,STD_INPUT_HANDLE
mov hStdIn,eax
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov hStdOut,eax
push offset TextA
call Print
lea edi,varA
call InputFloat
push offset TextB
call Print
lea edi,varB
call InputFloat
push offset TextC
call Print
lea edi,varC
call InputFloat
fld varA; st(0):=a
fadd varB; st(0):=a+b
fsub varC; st(0):=a+b-c
fld st(0); st(1):=st(0)
fmul; st(0):=(a+b-c)^2
fld varB; st(0):=b
fmul varC; st(0):=b*c
fsub varA; st(0):=b*c-a
fld st(0); st(1):=st(0)
fmul; st(0):=(b*c-a)^2
fadd; st(0):=(a+b-c)^2+(b*c-a)^2
fstp varR
push offset Result
call Print
invoke FloatToStr,varR,addr Buff
push offset Buff
call Print
invoke ReadConsole,hStdIn,addr Buff+4,20,addr Buff,0
invoke ExitProcess,0
end N69950314

P.S. Корректность ввода с клавиатуры не проверяется.
[Ss]
[Ss]
51 590
Лучший ответ
пиши в личку
PP
Pro100.sashok Pro100
3 688