![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 15.03.2011
Сообщений: 2
|
![]()
знаю, что при помощи оператора div
но не понимаю как. где должно быть делимое , как его туда перенести , где делитель, как его туда перенести. в общем ничего не получается( На данный момент делимое в регистре dx:ax Оно является результатом умножения числа на слово. Делитель находится в стеке(в виде двух слов). является результатом умножения двух слов. помогите пожалуйста |
![]() |
![]() |
![]() |
#2 | |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]() Цитата:
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 до тех пор, пока она не станет положительной. Это ж так просто ![]() |
|
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 15.03.2011
Сообщений: 2
|
![]()
гугл уже сто раз обыскал.
нашёл команду которая расширяет регистр ax mozvx .но она не работает у меня . иы изучаем процессор 8086 и не понимает регистры eax edx (умножение беззнаковое) |
![]() |
![]() |
![]() |
#4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Показывай как пробовал
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 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. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[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 |