Вычислить
заданное смешанное арифметическое выражение для данных в форматах BYTE
(переменные a,b) и WORD (остальные переменные). (2*c-d*42)/(c+a-1)
ВУЗы и колледжи
Составить программу на Ассемблере для вычисления выражения
В данном выражении нет переменной b. Скорее всего имелась в виду переменная d.
В выражении есть операция деления, значит, не смотря на то, что входные переменные целого типа, результатом будет действительное число. Ведь в условии ничего не сказано, что деление целочисленное.
format PE console
entry N170739402
include "win32a.inc"
section ".code" code readable executable
N170739402:
cinvoke printf, Prompt
cinvoke scanf, fInp, NumBuf
mov al, byte [NumBuf]
mov [A], al
add byte [Prompt + 8], 2
cinvoke printf, Prompt
cinvoke scanf, fInp, NumBuf
mov ax, word [NumBuf]
mov [C], ax
inc byte [Prompt + 8]
cinvoke printf, Prompt
cinvoke scanf, fInp, NumBuf
mov al, byte [NumBuf]
mov [D], al
finit
movsx eax, [C]
mov dword [NumRes], eax
sal eax, 1
mov [NumBuf], eax
fild [NumBuf]
movsx eax, [D]
mov [NumBuf], eax
fild [NumBuf]
mov [NumBuf], 42
fild [NumBuf]
fmulp
fsubp
fild dword [NumRes]
movsx eax, [A]
mov [NumBuf], eax
fild dword [NumBuf]
faddp
fld1
fsubp
fdivp
fstp [NumRes]
cinvoke printf, Result, dword [NumRes], dword [NumRes+4]
cinvoke getch
cinvoke exit, 0
section ".data" data readable writeable
Prompt db "Введите A: ", 0
Result db "Ответ: %f", 13, 10, 10,\
"Для завершения работы нажмите любую клавишу... ", 0
fInp db "%d", 0
section ".bss" data readable writeable
A rb 1
C rw 1
D rb 1
NumBuf rd 1
NumRes rq 1
section ".idata" import data readable
library msvcrt, "msvcrt.dll"
import msvcrt, getch, "_getch", printf, "printf",\
scanf, "scanf", exit, "_exit"

P.S. Проверка корректности ввода не производится.
В выражении есть операция деления, значит, не смотря на то, что входные переменные целого типа, результатом будет действительное число. Ведь в условии ничего не сказано, что деление целочисленное.
format PE console
entry N170739402
include "win32a.inc"
section ".code" code readable executable
N170739402:
cinvoke printf, Prompt
cinvoke scanf, fInp, NumBuf
mov al, byte [NumBuf]
mov [A], al
add byte [Prompt + 8], 2
cinvoke printf, Prompt
cinvoke scanf, fInp, NumBuf
mov ax, word [NumBuf]
mov [C], ax
inc byte [Prompt + 8]
cinvoke printf, Prompt
cinvoke scanf, fInp, NumBuf
mov al, byte [NumBuf]
mov [D], al
finit
movsx eax, [C]
mov dword [NumRes], eax
sal eax, 1
mov [NumBuf], eax
fild [NumBuf]
movsx eax, [D]
mov [NumBuf], eax
fild [NumBuf]
mov [NumBuf], 42
fild [NumBuf]
fmulp
fsubp
fild dword [NumRes]
movsx eax, [A]
mov [NumBuf], eax
fild dword [NumBuf]
faddp
fld1
fsubp
fdivp
fstp [NumRes]
cinvoke printf, Result, dword [NumRes], dword [NumRes+4]
cinvoke getch
cinvoke exit, 0
section ".data" data readable writeable
Prompt db "Введите A: ", 0
Result db "Ответ: %f", 13, 10, 10,\
"Для завершения работы нажмите любую клавишу... ", 0
fInp db "%d", 0
section ".bss" data readable writeable
A rb 1
C rw 1
D rb 1
NumBuf rd 1
NumRes rq 1
section ".idata" import data readable
library msvcrt, "msvcrt.dll"
import msvcrt, getch, "_getch", printf, "printf",\
scanf, "scanf", exit, "_exit"

P.S. Проверка корректности ввода не производится.
обращайся
Похожие вопросы
- Помогите составить небольшую программу на ассемблере
- Помогите с написанием программы на АССЕМБЛЕРЕ!!! (внутри)
- помогите пожалуйста написать программу на ассемблере вычислить D = (A*B)*B E = (A-B)*(C-A)/B
- Написать программу для перевода введённого с клавиатуры шестнадцатеричного числа в десятичное на ассемблере (MASM).
- 35. Что такое ветвь? Почему в программе необходимо предусматривать вычисления по всем возможным ветвям?
- помогите с Ассемблером
- Помогите решить задачу на ассемблере
- Рассчитать контрольную сумму строки, введённой пользователем. Задача на Ассемблере.
- Формула Феррари для вычисления 5 порядка
- Нужна помощьв вычислении пределов! (