Форум программистов, компьютерный форум, киберфорум
Наши страницы

Assembler для начинающих

Войти
Регистрация
Восстановить пароль
 
bobtb
0 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 46
#1

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

25.04.2016, 16:17. Просмотров 229. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вычисление выражения по формуле (Assembler):

Вычисление выражения по формуле - Assembler
Вычислить значение функции F(x)=x2+5x+7

Вычисление выражения по формуле. - Assembler
X=(–3A – 5B + 7C)/4- то что пытаюсь сделать .model small stack 100h dataseg A dw 1 B dw 3...

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

Вычисление выражения по формуле. - Assembler
Как сделать? (A-2)(A+6)(A*4)

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

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

6
Mikl___
Автор FAQ
10860 / 5786 / 507
Регистрация: 11.11.2010
Сообщений: 10,796
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
Эксперт быдлокодинга
1532 / 445 / 60
Регистрация: 04.11.2010
Сообщений: 1,219
26.04.2016, 01:08 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от 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
2761 / 957 / 244
Регистрация: 29.07.2014
Сообщений: 1,967
Записей в блоге: 4
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
10860 / 5786 / 507
Регистрация: 11.11.2010
Сообщений: 10,796
26.04.2016, 14:15 #6
Цитата Сообщение от bobtb Посмотреть сообщение
779 выводит
  1. замени команды mul на imul
  2. про команду adc прочитай в учебнике (интернете)
  3. результат равен 11
0
R71MT
2761 / 957 / 244
Регистрация: 29.07.2014
Сообщений: 1,967
Записей в блоге: 4
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
Привет! Вот еще темы с ответами:

Вычисление выражения по формуле. - Assembler
Вычислить: y= 2c+d-1 / c-a/2 помогите кто может

Вычисление выражения по формуле. - Assembler
Здравствуйте, необходимо написать программу вычисления выражение.Здесь Алгебраическая сумма i=от 1 до 2. Пример y=(a^2+2*a+c)*i, где...

Вычисление выражения по формуле. - Assembler
1) Разработать консольное приложение, использую ассемблер MASM32 , вычисляющее следующее логические выражения: a=N=7 b=8 ...

Вычисление выражения по формуле. - Assembler
Составить программу на языке Assembler для вычисления нижеследующего выражения Y= A^2*X-B/C*X+8D X=6 A=6 B=4 C=3 D=1


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

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

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