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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2010, 18:49   #1
MUTOgen
Новичок
Джуниор
 
Регистрация: 05.05.2008
Сообщений: 1
По умолчанию Divide error

Привет всем. Пишу ассемблерную вставку для вычисления выражения. Не пойму где ошибаюсь.
Использую idiv. В описании сказано, что делимое должно быть "шире" чем делитель. Поэтому нужно расширять делимое в случае необходимости. Так вот:
Код:
asm{
        mov al,aC
        mov bl,2
        idiv bl
        mov cx,ax //cx = a/2
 
        mov ax,1
        sub ax,cx//ax = 1-a/2
        mov bx,ax
 
        mov ax,4
        mul dC
        mov cl,cC
        add ax,cx
 
        mov cx,123
        sub ax,cx
        cwd
 
        idiv bx
     
     }
Эта вставка дает мне Divide error на последнее деление (остальные значения выводил по одному, считаются вроде как правильно и без ошибок). Что я делаю не так?
MUTOgen вне форума Ответить с цитированием
Старый 12.03.2010, 03:08   #2
|{ot
Форумчанин
 
Аватар для |{ot
 
Регистрация: 09.03.2008
Сообщений: 127
Сообщение

div byte ; делит аx/byte = ah -остаток,al - целое

div word ; делит dx:ax/word = dx-остаток, ax - целое

div dword ; edx:eax/dword = edx-остаток, eax - целое

mul -аналогично...

Вместо
mov al,aC
mov bl,2
idiv bl
mov cx,ax //cx = a/2
Используй
shr ax,1; ax=ax/2
|{ot вне форума Ответить с цитированием
Старый 12.03.2010, 12:05   #3
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

вместо mov al,aC/mov bl,2/idiv bl нужно mov al,aC/sar al,1 так как деление со знаком
далее вместо mov cx,ax должно быть cbw / mov cx,ax
далее не учитывая что у тебя только, что было деление со знаком используешь mul вместо imul куча ошибок, лучше напиши само выражение --> проще написать заново
Mikl___ вне форума Ответить с цитированием
Старый 12.03.2010, 12:05   #4
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

дублируется сообщение
Mikl___ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[ILINK32 Error] Error: Unresolved external... Equilibrium Keeper Общие вопросы C/C++ 3 12.02.2010 18:12
Ищу причину ошибки: Error in loading DLL, она же Error 48. hozpraktik Microsoft Office Excel 1 19.11.2009 12:39
Как решить проблему с Error in loading DLL (Error 48)? Klim Bassenger Microsoft Office Excel 4 23.10.2009 13:44
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Debug/main.exe : fatal error LNK11 prefak Win Api 0 19.04.2009 16:51