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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2011, 21:23   #1
redwhite
Новичок
Джуниор
 
Регистрация: 15.03.2011
Сообщений: 2
По умолчанию деление чисел

знаю, что при помощи оператора div
но не понимаю как.
где должно быть делимое , как его туда перенести , где делитель, как его туда перенести. в общем ничего не получается(
На данный момент делимое в регистре dx:ax
Оно является результатом умножения числа на слово.
Делитель находится в стеке(в виде двух слов). является результатом умножения двух слов.
помогите пожалуйста
redwhite вне форума Ответить с цитированием
Старый 16.03.2011, 03:56   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Цитата:
Сообщение от redwhite
деление чисел -- знаю, что при помощи оператора div
но не понимаю как. где должно быть делимое , как его туда перенести , где делитель, как его туда перенести. в общем ничего не получается(
redwhite
1) В поисковой строке GOOGLE набери "ассемблер команда DIV" или в любом учебнике по ассемблеру найдешь -- это ответ на первый вопрос
2) на второй вопрос деление слова на слово:
10. Алгоритм беззнакового деления с двойной точностью числа (c*2^16+d) на число (a*2^16+b) заключается в следующем. Вычислить такие q и r, что c=ar+q (r - частное от деления c на a, q - остаток). Pавенство c=ar+q означает, что c*2^16+d=(ar+q)2^16+d=r(a*2^16+b)+q *2^16+d-rb. Величина q*2^16+d-rb считается остатком первоначального деления; если она отрицательна, следует производить повторяющийся декремент r до тех пор, пока она не станет положительной. Это ж так просто
Mikl___ вне форума Ответить с цитированием
Старый 16.03.2011, 09:38   #3
redwhite
Новичок
Джуниор
 
Регистрация: 15.03.2011
Сообщений: 2
По умолчанию

гугл уже сто раз обыскал.
нашёл команду которая расширяет регистр ax
mozvx .но она не работает у меня . иы изучаем процессор 8086

и не понимает регистры eax edx

(умножение беззнаковое)
redwhite вне форума Ответить с цитированием
Старый 16.03.2011, 09:45   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и не понимает регистры eax edx
И не надо... dx ax используй.
Показывай как пробовал
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.03.2011, 04:42   #5
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

redwhite
Я вижу, что идею деления двойного слова на двойное слово ты не понял. Постараюсь объяснить на примере деления слова на слово. Берем 65532 и делим на Win- калькуляторе на 32155
65532/32155=2 остаток 1222 или тоже в шестнадцатеричной
FFFC/7D9B=2 остаток 4С6h
0FFFCh можно записать как сумму байтов: c*2^8 + d где c=0FFh d=0FCh
аналогично 7D9Bh можно записать как a*2^8 + b где a=7Dh b=9Bh
c=a*r+q где r=c/a и q= остаток от (с/а)
при делении (c*2^8 + d)/(a*2^8 + b) частное равно r остаток q*2^8+d-r*b
если (q*2^8+d-r*b) < 0, тогда r уменьшают на 1, персчитывают q=c-a*r и остаток q*2^8+d-r*b снова пересчитывают. Уменьшение r на единицу (r:=r-1), пересчет q (q:=q+a) и пересчет q*2^8+d-r*b будет продолжаться, пока q*2^8+d-r*b не станет положительным.
В нашем случае с=0FFh a=7Dh делим c/a=2 получаем r=2 q=5
считаем остаток q*2^8+d-r*b= 5 *100h + 0FCh - 2*9Bh=5FCh-136h=4C6h > 0
значит получили ответ FFFC/7D9B=2 остаток 4С6h
В твоем случае делится не слово на слово, а двойное слово на двойное слово (то есть вместо 2^8 нужно 2^16) и наверняка, в условии написано не использовать вычисления на FPU и 32-разрядную арифметику!
Если суть понял, то программу напишешь

Последний раз редактировалось Mikl___; 17.03.2011 в 06:37.
Mikl___ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Asm] Деление чисел aggro11 Помощь студентам 0 05.05.2010 23:36
Деление модулей чисел aggro11 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 05.05.2010 22:56
Деление одинаковых чисел Halifath Помощь студентам 0 03.05.2010 12:12
Деление чисел с остатком (C++) mustang075 Помощь студентам 2 16.12.2009 18:21
Деление чисел в двоичной системе счисления Mss_Smith Помощь студентам 9 04.05.2007 17:02