Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2014, 14:19   #1
Zinkutal
Новичок
Джуниор
 
Регистрация: 24.12.2013
Сообщений: 1
По умолчанию "Арифметические выражения" - неверный результат

Задание (_a * _b - _d) / (_b - _d)

Код ASM

Код:
.686             
.model flat           
.data           
_a dw 5    
_b dw 62        
_d dw 411            
res dw 3 dup (0)     
.code            
_start:                
mov ax,_a           
mul _b              
push dx             
push ax
sub ax, _d 
push ax
mov cx, _b
sub cx, _d
div cx
xor si,si               
sub si,dx               
mov res,si      
pop si        
sbb si,ax                 
mov res+2,si                 
pop si
sbb si,0             
mov res+4,si                
 
ret                 
end _start
Помогите найти ошибку, заранее спасибо!
Zinkutal вне форума Ответить с цитированием
Старый 09.10.2014, 11:21   #2
x128
Форумчанин
 
Регистрация: 03.02.2010
Сообщений: 178
По умолчанию

В программе никак не учитывается тот факт, что после умножения слова на слово, результат будет в паре dx:ax. Также с делением, если делитель слово, делимое должно быть в паре dx:ax. Судя по данным, делимое и делитель будут знаковыми, а деление беззнаковое. Если предположить, что все промежуточные результаты будут в пределах слова, в таком случае, нужно использовать знаковое деление idiv и подготовить делимое командой cwd.

Код:
mov ax, _a
mul _b
sub ax, _d
mov  bx, _b
sub bx, _d
cwd
idiv bx
x128 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
"Ошибка: Неверный дескриптор (6)" FleXik Общие вопросы Delphi 1 12.11.2012 18:51
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Ошибка при работе с canvas "Неверный дескриптор" Алекс Ялта Gamedev - cоздание игр: Unity, OpenGL, DirectX 17 13.06.2011 22:32
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04