Консультация № 189124
08.04.2016, 13:07
0.00 руб.
08.04.2016, 13:37
0 4 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:

Написать программу на ассемблере, для решения данного уравнения

Программная реализация на TASM, DOS, формат ехе.

Обсуждение

давно
Посетитель
400166
3
08.04.2016, 13:08
общий
вот уравнение
Прикрепленные файлы:
30551bc64f311ef2b21770173f805d68.jpg
давно
Старший Модератор
31795
6196
08.04.2016, 14:28
общий
Адресаты:

В знаменателях двойки или семерки?
Решать целочисельной математикой или вещественной?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
400166
3
08.04.2016, 16:21
общий
08.04.2016, 16:21
Цитата: Зенченко Константин Николаевич
В знаменателях двойки или семерки?
Решать целочисельной математикой или вещественной?
В знаменателях двойки.
Как решать, думаю разницы нет
давно
Старший Модератор
31795
6196
08.04.2016, 17:42
общий
это ответ
Здравствуйте, nikolan2012!

Смотрите приложение:
[code lang=asm h=200]model small
.data
a dw 34
b dw 260
c dw 2
d dw 170
e dw 3
f dw 36
g dw 8
h dw 5
i dw 6
j dw 7
dbRes db 10,13,'Result:$'
.stack 100h
.code
start: mov ax,@data
mov ds,ax;настраиваем сегмент
;получаем знаменатель
mov ax,h;загружаем 5
xor dx,dx;
mul i;умножаем на 6
mov bx,f;загружаем 36
add bx,g;суммируем с 8
shr bx,1;делим на 2
add bx,ax;суммируем (36+8)/2+5*6
;
mov ax,d;загружаем 170
xor dx,dx
mul e;умножаем на 3
mov cx,b;загружаем 260
shr cx,1;делим на 2
add ax,cx;суммируем 170*3+260/2
add ax,a;суммируем 34+170*3+260/2
;
xor dx,dx
div bx;получаем первую дробь
;(34+170*3+260/2)/((36+8)/2+5*6)
push ax;сохраняем в стеке
;
mov ax,i;загружаем 6
add ax,j;суммируем с 7
mov si,a;загружаем 34
shr si,1;делим на 2
xor dx,dx
mul si;получаем второе число
pop bx;востанавливаем первое число
add ax,bx;суммируем
;
mov si,10;система счисления
xor cx,cx;счетчик в стеке
@@01: xor dx,dx
div si;получаем младшую цифру
push dx;запоминаем в стеке
inc cx;считаем
or ax,ax;повторяем пока не ноль в ах
jnz @@01
mov ah,9
lea dx,dbRes
int 21h;выводим сообщение
@@02: pop ax;извлекаем цифру
add al,'0';переводим в символ
int 29h;выводим на экран
loop @@02
xor ax,ax;ожидаем любую клавишу
int 16h
mov ah,4Ch;выход
int 21h
end start[/code]
Комментариев достаточно, если что спрашивайте в мини-форуме.
Удачи!
5
Спасибо, все работает!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа