Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
bobtb
0 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 46
1

Вычисление выражения по формуле

25.04.2016, 16:17. Просмотров 848. Ответов 6
Метки нет (Все метки)

Задача: с клавиатуры читаем a,b,c, вычисляем уравнение

Само уравнение: 2C+4AB+(a^2-b^2)
Ввожу a=1,b=2,c=3, выдаёт 9,вместо 11, в чём ошибка? Вот сам участок кода:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
mov al,c ;al=c
mov bl,2 ;bl=2
mul bl ;ax=2c
mov bx,ax ;bx=ax=2c
xor ax,ax ;ax=0
 
mov al,a ;al=a
mov bl,4 ;bl=4
mul bl ;ax=4a
mul b ; ax=4ab
add ax,bx ;ax=ax+bx=ax=2c+4ab
mov dx,ax ;dx=ax=2c+4ab
xor ax,ax ;ax=0
xor bx,bx ;bx=0
 
mov al,b ;al=b
mul b ;ax=b*b
mov cx,ax ;cx=ax=b*b
xor ax,ax ;ax=0
xor al,al ;al=0
mov al,a ;al=a
mul a   ;ax=a*a
sub ax,cx ;ax=ax-cx=a*a-b*b
 
add ax,dx
xor dx,dx
 
mov d,al ;ответ ax в d
ЗАРАНЕЕ СПАСИБО!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2016, 16:17
Ответы с готовыми решениями:

Вычисление выражения по формуле
Помогите пожалуйста, только сегодня начили новую тему программирование на языке...

Вычисление выражения по формуле.
Доброго времени суток! Необходимо выполнить данные действия на ассемблере,...

Вычисление выражения по формуле
Необходимо посчитать след. формулу: y=\frac{3\cdot {a}^{2}\cdot...

Вычисление выражения по формуле
Нужно изменить код программы под вычисление данного выражения: Y=3*A/(B+C-D)...

Вычисление выражения по формуле.
Разработайте, пожалуйста, программу, реализующую указанную формулу, исполнить...

6
Mikl___
Автор FAQ
11777 / 6081 / 554
Регистрация: 11.11.2010
Сообщений: 11,071
25.04.2016, 16:40 2
bobtb,
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
mov al,a
mov ah,al;ah=a
add al,b;al=a+b
sub ah,b;ah=a-b
mul ah;ax=(a-b)(a+b)=a*a-b*b
mov bx,ax
mov al,a
mul b;ax=a*b
add ax,ax;ax=2*a*b
add al,c
adc ah,0;ax=2*a*b+c
add ax,ax;ax=2*c+4*a*b
add ax,bx;ax=2*c+4*a*b+a*a-b*b
0
bobtb
0 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 46
25.04.2016, 23:09  [ТС] 3
Цитата Сообщение от Mikl___ Посмотреть сообщение
bobtb,
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
mov al,a
mov ah,al;ah=a
add al,b;al=a+b
sub ah,b;ah=a-b
mul ah;ax=(a-b)(a+b)=a*a-b*b
mov bx,ax
mov al,a
mul b;ax=a*b
add ax,ax;ax=2*a*b
add al,c
adc ah,0;ax=2*a*b+c
add ax,ax;ax=2*c+4*a*b
add ax,bx;ax=2*c+4*a*b+a*a-b*b
779 выводит

Добавлено через 9 минут
И можно пожалуйста без команды adc,т.к. я не знаю таких команд

Добавлено через 6 часов 1 минуту
Никто не может найти ошибку?
0
Полный 30h
Эксперт быдлокодинга
1533 / 446 / 61
Регистрация: 04.11.2010
Сообщений: 1,219
26.04.2016, 01:08 4
Лучший ответ Сообщение было отмечено bobtb как решение

Решение

Цитата Сообщение от bobtb Посмотреть сообщение
Assembler
1
2
3
4
5
6
7
mov bx,ax ;bx=ax=2c ; ТУТ ВЫ СОХРАНЯЕТЕ 2С В РЕГ. ВХ ЧТО БЫ СЛОЖИТЬ ЕГО С 4АВ
xor ax,ax ;ax=0
mov al,a ;al=a
mov bl,4 ;bl=4  ; А ТУТ ВЫ ЗАТИРАЕТЕ СОХРАНЕННОЕ В BX ИСПОЛЬЗУЯ МЛАДШУЮ ПОЛОВИНУ РЕГИСТРА
mul bl ;ax=4a
mul b ; ax=4ab
add ax,bx ;ax=ax+bx=ax=2c+4ab ; И УЖЕ ТУТ ИДЁТ НЕ 6+8, А 4+8
Дальше не проверял.
1
R71MT
3719 / 1345 / 293
Регистрация: 29.07.2014
Сообщений: 2,393
Записей в блоге: 5
26.04.2016, 12:06 5
Цитата Сообщение от bobtb Посмотреть сообщение
Само уравнение: 2C+4AB+(a^2-b^2)
Ввожу a=1,b=2,c=3: выдаёт 9, вместо 11
..хорошо посчитай! При таких данных результ будет не 11, а 10.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
; 2C+4AB+(a^2-b^2)
;----------------------------------------------
a  db  1
b  db  2
c  db  3
 
start:
    mov   al,[a]
    mov   bl,[b]
    mov   cl,[c]
;----------------------------------------------
    shl   cx,1        ; СХ = 2С
    mul   bl          ; АХ = А*В
    shl   ax,2        ; АХ = 4АВ
    add   ax,cx       ; АХ = 2С+4АВ
    push  ax          ; запомним..
;----------------------------------------------
    xor   ax,ax       ;
    mov   al,[a]      ;
    mul   ax          ;
    xchg  ax,dx       ; DХ = A^2
    mov   al,[b]      ;
    mul   ax          ; AX = B^2
    sub   dx,ax       ; DX = А^2-В^2
    pop   ax          ;
    add   ax,dx       ; AX = 2C+4AB+(A^2-B^2)
;----------------------------------------------
0
Mikl___
Автор FAQ
11777 / 6081 / 554
Регистрация: 11.11.2010
Сообщений: 11,071
26.04.2016, 14:15 6
Цитата Сообщение от bobtb Посмотреть сообщение
779 выводит
  1. замени команды mul на imul
  2. про команду adc прочитай в учебнике (интернете)
  3. результат равен 11
0
R71MT
3719 / 1345 / 293
Регистрация: 29.07.2014
Сообщений: 2,393
Записей в блоге: 5
26.04.2016, 16:07 7
Цитата Сообщение от Mikl___ Посмотреть сообщение
результат равен 11
..точно. Там-же перенос нужно учитывать.
0
26.04.2016, 16:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2016, 16:07

Вычисление выражения по формуле
Написать программу решения примера, использия цикл Loop (1-2!+4!-...)/n

Вычисление выражения по формуле
Написать программу для вычисления( (а+b)^2-2*a)/c

Вычисление выражения по формуле.
Составить программу на языке Assembler для вычисления нижеследующего выражения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru