Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 24.05.2015
Сообщений: 30

Вычислить значение выражения

22.01.2017, 18:05. Показов 999. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
(a*x^2+b*x+c)div(d*x+e) , Неправильно считает,где ошибся не пойму. Подскажите плиз.

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
.model small
 
.data
ten dw 10
a dw ?
b dw ?
c dw ?
d dw ?
x dw ?
e dw ?
result dw ?
i dw 0
 
file_name db 'in.txt',0
file_name_out db 'out.txt',0
s_error   db 'Error!',13,10,'$'
endline   db 13,10,'$'
buffer    dw 81             
handle    dw 1
buffer_out dw ?              
 
.code
  mov ax,@data
  mov ds,ax
start:
    mov ah,3Dh              
    xor al,al               
    mov dx, offset file_name        
    xor cx,cx               
    int 21h                 
    
    mov [handle],ax         
    
    ;read from file
    mov bx,ax               
    mov ah,3Fh              
    mov dx,buffer           
    mov cx,80               
    int 21h                 
    mov bx,buffer
    mov cx,ax
    xor ax,ax
    mov al,byte ptr [bx]
    sub al, 30h
    dec cx
    inc bx
strToNum:
    xor dx,dx
    mov dl,byte ptr [bx]
    cmp dl, 20h
    je Num
    mul ten
    mov dl,byte ptr [bx]
    inc bx
    sub dl, 30h
    add al, dl
    Loop strToNum 
Num:
    inc i
    inc bx
    cmp i, 1
    je scanfA
    cmp i, 2
    je scanfB
    cmp i, 3
    je scanfC
    cmp i, 4
    je scanfD
    cmp i, 5
    je scanfE
    cmp i, 6
    je scanfX
    ret
    
scanfA:
    mov a, ax
    xor ax,ax
    dec cx
    jmp strToNum
    ret
scanfB:
    mov b, ax
    xor ax,ax
    dec cx
    jmp strToNum
    ret
scanfC:
    mov c, ax
    xor ax,ax
    dec cx
    jmp strToNum
    ret
scanfD:
    mov d, ax
    xor ax,ax
    dec cx
    jmp strToNum
    ret
scanfX:
    mov x, ax
    xor ax,ax
    dec cx
    jmp strToNum
    ret
scanfE:  
    mov e, ax
    xor ax,ax
    call calculation
    mov result, cx 
close_file:
    mov ah,3Eh              
    mov bx,[handle]         
    int 21h       
open_output:
    mov ah,3Dh
    mov al, 02
    mov dx, offset file_name_out        
    xor cx,cx               
    int 21h                  
    mov [handle],ax
    mov di, offset buffer_out
    push di
    xor ax,ax
    xor dx,dx
    mov ax, result
    xor cx, cx
decs:                
    inc cx
    inc si          
    xor dx, dx
    mov bx, 10
    div bx
    add dx, '0'
    push dx
    cmp ax, 0
    jne decs
print:          
    xor dx, dx
    pop dx
    mov [di],dx
    inc di
    loop print
    xor dx, dx
    mov byte ptr [di], '$'
    pop di
    xchg dx, di
    mov ah, 9
    int 21h
    
    mov bx,[handle]         
    mov ah,40h                             
    mov cx, si               
    int 21h                 
    jnc close_file_out          
    call error_msg          
 
close_file_out:
    mov ah,3Eh              
    mov bx,[handle]         
    int 21h                 
    jnc exit                
    call error_msg  
exit:
    mov ah,8                
    int 21h                 
    mov ax,4C00h            
    int 21h                 
 
;-------------------------------------------------------------------------------
;error message
error_msg:
    mov ah,9
    mov dx, offset s_error
    int 21h                
    ret
 
;-------------------------------------------------------------------------------
;calculation
calculation:
 mov ax,x
    mul ax
    mov bx,a
    mul bx ;DX:AX=a*x^2
    mov cx,ax ;CX=a*x^2
    mov ax,b 
    mov bx ,x 
    mul bx 
    ;;;;;;;;;;
    add cx,ax ;cx=a*x^2+b*x
    mov bx,c 
    add cx,bx ;CX=first block
    ;;;;;;;;;
    mov ax,d 
    mov bx,x 
    mul bx ;AX= d*x
    mov bx,e 
    add bx,ax  ;BX=second block 
    ;;;;;
    xor ax,ax
    mov ax,cx 
    div bx 
    xor cx,cx
    mov dx,ax
    ret
    end
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.01.2017, 18:05
Ответы с готовыми решениями:

Вычислить значение выражения
Разработать с помощью Debug программу, выполняющую вывод на экран текстового сообщения и последующее вычисление выражения: Y=/Х5, где...

Вычислить значение выражения: ((2*c)-(d/3)) / (b-(a/4))
Имеется пример ((2*c)-(d/3)) / (b-(a/4)) При клике на Btn1 значение выводится в Edit1 В качестве тестовых чисел я взял: a - 20 b - 10 c...

Вычислить значение выражения
Помогите решить уравнение x=((C+A)+780)/(-B)+45H x - двойное слово А - слово B,C - байт Добавлено через 13 минут a dw -1555 ...

9
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8665 / 4502 / 1670
Регистрация: 01.02.2015
Сообщений: 13,931
Записей в блоге: 13
22.01.2017, 18:44
Программа велика для анализа. И нет комментариев.
Уточните, неправильно считает или неправильно выводит?

Если считает - смотрите, вы не учитываете то, что после a*x^2 у вас результат в DX:AX и при вычислении b*x вы затираете DX. Потом, при сложении a*x^2 и b*x вы не учитываете старшее слово. При сложении (a*x^2 + b*x) и c вы не учитываете старшее слово.

При вычислении знаменателя - всё то же самое.

Но предположим, что все вычисления умещаются в 16 разрядные регистры ax и bx (к моменту деления в строке 201).
Но команда деления div bx делит не ax, а DX:AX. Т.е. вам нужно или учитывать старшие слова или перед делением обнулить DX.
0
0 / 0 / 1
Регистрация: 24.05.2015
Сообщений: 30
22.01.2017, 18:57  [ТС]
Аналогичный код ,но со вводом данных с консоли работает корректно.А этот выводит в файл неправильный результат
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8665 / 4502 / 1670
Регистрация: 01.02.2015
Сообщений: 13,931
Записей в блоге: 13
22.01.2017, 18:59
Перед делением вы очищаете DX?
0
0 / 0 / 1
Регистрация: 24.05.2015
Сообщений: 30
22.01.2017, 19:07  [ТС]
Очистил но результат не изменился
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8665 / 4502 / 1670
Регистрация: 01.02.2015
Сообщений: 13,931
Записей в блоге: 13
22.01.2017, 19:48
Если вы не уверены, что вычисления верны, сделайте перед вызовом вычислений замену переменных на эталонные и посмотрите результат.

Добавьте пробный вывод результатов на экран.

Следующий этап - отладчик типа TurboDebugger, Insight.

Я бы сделал это сам, но код слишком велик, не комментирован, не структурирован, и у меня нет входного файла.
0
0 / 0 / 1
Регистрация: 24.05.2015
Сообщений: 30
23.01.2017, 15:26  [ТС]
Все разобрался ,спасибо))
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
23.01.2017, 18:43
Цитата Сообщение от karpukka Посмотреть сообщение
Все разобрался ,спасибо))
Правила форума CyberForum.ru
4. Порядок создания тем
4.10 => Если вопрос был решен вами самостоятельно, отпишите об этом в своей теме - есть и другие люди, которые столкнутся с той же проблемой, и им поможет ваш ответ
0
0 / 0 / 1
Регистрация: 24.05.2015
Сообщений: 30
23.01.2017, 19:13  [ТС]
При умножении и делении надо было обнулять DX
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6812 / 2052 / 238
Регистрация: 14.12.2014
Сообщений: 4,311
Записей в блоге: 12
23.01.2017, 22:25
Цитата Сообщение от karpukka Посмотреть сообщение
При умножении
При умножении точно не надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.01.2017, 22:25
Помогаю со студенческими работами здесь

Вычислить значение выражения
Вычислить уравнение (a ^ 3) / ((b | 9) * (!c + 1)) – (d & 2)

Вычислить значение выражения
Вычислить условный целочисленный выражение в форматах Integer и Word, используя команды сравнения. Результат проверить на область...

Вычислить значение выражения
Здравствуйте. Уравнение y = (12 + 3/8+6)*3+12. Ошибки: yyyy.asm(4) : invalid character in file yyyy.asm(5) : must be in segment...

Вычислить значение выражения
Товарищи, помогите пожалуйста! ;Условие ; 2*(b^3+b+c^2) ; X = ---------------. ; a*c^2+4*b^2 ; (3*x-2*a)*c-b^3-a ; Y =...

Вычислить значение выражения
y = x3 +1 _______________________________________ чтото типо такого ---------------------- .DATA xdw 3 strbufdb 8 dup('$') ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru