Другие языки программирования и технологии
С помощью команд fpu вычислить площадь круга, исходя из введѐнного диаметра. Ассемблер...
Нужна программа на языке ассемблера, выполняющая эту задачу. Т.к. я в программировании дуб дубом, а преподаватель сказал "Надо", обращаюсь к вам: Люди добрые, помогите чем можете!) полная задача заключается в "Операции ввода с клавиатуры и вывода на экран можно написать на языке высокого уровня, но все вычисления должны быть выполнены на ассемблере." Мне хотя бы с ассемблером разобраться...
Не указан язык высокого уровня, на котором нужно делать операции ввода с клавиатуры и вывода на экран, поэтому вся программа на ассемблере.
Процессор Intel 80386/87-совместимый (и выше) , компилятор MASM (+MASM32 SDK), 32-разрядное консольное приложение для Windows.
.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 100h
.data
tPrompt db 'Введите диаметр круга: ',0
tResult db 'Площадь круга = ',0
const4 dw 4
.data?
Diameter dq ?
Square dq ?
hStdIn dd ?
hStdOut dd ?
Buff db 24 dup (?)
.code
;Функция вычисления площади круга
;Объявление функции в Паскале:
;function CSquare(d: double): double; stdcall;
;Объявление функции в C/C++:
;double __stdcall CSquare(double d);
CSquare proc
push ebp
mov ebp,esp
fld qword ptr [ebp+8]
fmul st(0),st(0)
fldpi
fmul
fidiv const4
pop ebp
ret 8
CSquare endp
N74836316:
finit
invoke GetStdHandle,STD_INPUT_HANDLE
mov hStdIn,eax
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov hStdOut,eax
push offset tPrompt
call Print
invoke ReadConsole,hStdIn,addr Buff+4,20,addr Buff,0
invoke StrToFloat,addr Buff+4,addr Diameter
;Вызов функции
push dword ptr Diameter+4
push dword ptr Diameter
call CSquare
fstp Square
push offset tResult
call Print
invoke FloatToStr,Square,addr Buff
push offset Buff
call Print
invoke ReadConsole,hStdIn,addr Buff+4,20,addr Buff,0
invoke ExitProcess,0
Print proc
mov ebp,esp
invoke lstrlenA,[ebp+4]
invoke WriteConsole,hStdOut,[ebp+4],eax,0,0
ret 4
Print endp
end N74836316
P.S. В комментариях указано, как функция вычисления площади круга CSquare видна (и должна вызываться соответственно) в языках Pascal и C/C++.

Процессор Intel 80386/87-совместимый (и выше) , компилятор MASM (+MASM32 SDK), 32-разрядное консольное приложение для Windows.
.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 100h
.data
tPrompt db 'Введите диаметр круга: ',0
tResult db 'Площадь круга = ',0
const4 dw 4
.data?
Diameter dq ?
Square dq ?
hStdIn dd ?
hStdOut dd ?
Buff db 24 dup (?)
.code
;Функция вычисления площади круга
;Объявление функции в Паскале:
;function CSquare(d: double): double; stdcall;
;Объявление функции в C/C++:
;double __stdcall CSquare(double d);
CSquare proc
push ebp
mov ebp,esp
fld qword ptr [ebp+8]
fmul st(0),st(0)
fldpi
fmul
fidiv const4
pop ebp
ret 8
CSquare endp
N74836316:
finit
invoke GetStdHandle,STD_INPUT_HANDLE
mov hStdIn,eax
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov hStdOut,eax
push offset tPrompt
call Print
invoke ReadConsole,hStdIn,addr Buff+4,20,addr Buff,0
invoke StrToFloat,addr Buff+4,addr Diameter
;Вызов функции
push dword ptr Diameter+4
push dword ptr Diameter
call CSquare
fstp Square
push offset tResult
call Print
invoke FloatToStr,Square,addr Buff
push offset Buff
call Print
invoke ReadConsole,hStdIn,addr Buff+4,20,addr Buff,0
invoke ExitProcess,0
Print proc
mov ebp,esp
invoke lstrlenA,[ebp+4]
invoke WriteConsole,hStdOut,[ebp+4],eax,0,0
ret 4
Print endp
end N74836316
P.S. В комментариях указано, как функция вычисления площади круга CSquare видна (и должна вызываться соответственно) в языках Pascal и C/C++.

Похожие вопросы
- Как при помощи команды tasklist вывести только память процессов без PID, Имя сессии и т. д.
- Выполнение команд ассемблера в МП
- нужна помощь. найти сумму квадратов чётных элементов на языке ассемблер используя арифметические команды
- Нужна помощь с ассемблером
- Треугольник задан координатами своих вершин. вычислить его площадь. На языке СИ!
- Что может ассемблер?
- Почему многие программисты ненавидят ассемблер?Ведь у него куча плюсов!Он позволяет максимально задействовать
- Нужна помощь с программой на ассемблере - комментирование каждой строки
- нужна помощь в изучении ассемблера
- Ассемблер сдвиги. Как умножить любое число на 13 с помощью сдвигов в ассемблере