Консультация № 189133
09.04.2016, 10:12
0.00 руб.
1 1 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Помогите написать код на языке ассемблера для решения данного уравнения

Прикрепленные файлы:
c4f3ce1dce8fa495611bc720d421f9d292b8c0fc.PNG

Обсуждение

давно
Посетитель
7438
7205
12.04.2016, 15:52
общий
это ответ
Здравствуйте, vitya-titya!
Программа считает в целых числах.
Вся эта дробь из-за того, что отбрасываются остатки, сводится к 0
Результат -34
[code lang=asm h=200]
.model small
.data
;числа-константы из формулы
C123 dw 123
C4 dw 4
C5 dw 5
C6 dw 6
C3 dw 3
C36 dw 36
C34 dw 34

sRes db 10,13,'Result: $'

.stack 100h ;стек

.code ;сегмент кода
start: mov ax, @data
mov ds, ax ;настраиваем сегментный регистр данных

mov ax, С123 ;ax=123
sub ax, C4 ;ax=123-4
cwd ;готовимся к делению
idiv C5 ;ax = dx:ax/5 = (123-4)/5, остаток в dx отбрасываем
mov di, ax ;сохраним в di

mov ax, C6 ;ax=6
sub ax, C3 ;ax=6-3
cwd ;готовимся к делению
idiv C4 ;ax = dx:ax/4 = (6-3)/4, остаток в dx отбрасываем
add di, ax ;di = (123-4)/5 + (6-3)/4

mov ax, C4 ;ax = 4
imul C3 ;dx:ax = 4*3, dx=0 отбрасываем
add ax, C36 ;ax = 4*3 + 36

xchg ax, di ;меняем содержимое ax и di
cwd ;готовимся к делению
idiv di ;ax = ((123-4)/5 + (6-3)/4) / (4*3 + 36), остаток отбрасываем

sub ax, C34 ;ax = ax - 34

;выведем результат из ax
push ax ;сохраним число в стеке
mov ah, 9
lea dx, sRes
int 21h ;выводим сообщение
pop ax

mov bx, 10 ;система счисления
xor cx, cx ;счетчик в стеке
test ax, ax ;проверим на знак числа
jge div_loop ;>=0 просто выводим
neg ax ;ax = -ax
push ax ;сохраним
mov dl, '-' ;выведем знак минуса
mov ah, 2
int 21h
pop ax
div_loop: ;цикл получения цифр делением на 10
xor dx,dx
div bx ;получаем младшую цифру
push dx ;запоминаем в стеке
inc cx ;считаем
test ax,ax ;повторяем пока не ноль в ах
jnz div_loop

dig_loop: ;цикл вывода цифр в обратном порядке
pop dx ;извлекаем цифру
add dl,'0' ;переводим в символ
mov ah, 2
int 21h ;выводим на экран
loop dig_loop

xor ax, ax ;ожидаем любую клавишу
int 16h

mov ax, 4C00h ;выход
int 21h
end start
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа