![]() |
|
|
![]()
|
|
| denks |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 16.4.2006 Репутация: нет Всего: нет |
Здравствуйте. Решил начать изучение асма с простейших математических операций. Разобрал операции add,sub,imul,shl. Вот возникла небольщая проволочка с оператором div (деление). Помогите разобраться новичку. На базе вот этого кода пожалуйста. Здесь складываются два числа. Мне надо разделить. Спасибо.
|
|||
|
||||
| sgi1981 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 16.3.2006 Репутация: 2 Всего: 10 |
Алгоритм выполнения операции беззнакового деления div. Если делитель размером в байт, то делимое должно быть изначально в регистре ax. После деления div r8(m8) - частное помещается в al, остаток - в ah. Если делитель размером в слово, то делимое должно быть изначально в паре регистров dx:ax, причем младшая часть делимого находится в ax. После деления div r16(m16) - частное помещается в ax, остаток - в dx. Если делитель размером в двойное слово, то делимое должно быть изначально в паре регистров edx:eax, причем младшая часть делимого находится в eax. После деления div r32(m32) - частное помещается в eax, остаток - в edx. При выполнении операции деления возможно возникновение исключительной ситуации 0 - ошибка деления. Эта ситуация возбуждается в одном из двух случаяев: делитель равен 0 или частное слишком велико для его размещения в регистрах eax/ax/al. Важно. Для деления чисел со знаком используется команда idiv Алгоритм работы её аналогичен. -------------------- Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства. |
||||
|
|||||
| denks |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 16.4.2006 Репутация: нет Всего: нет |
Спасибо большое.
|
|||
|
||||
| denks |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 16.4.2006 Репутация: нет Всего: нет |
Ещё вопрос. Компилирую приведённый код, получаю ошибку компилятора
error A2001 : immediate operand not allowed Подскажите пожалуйста, что нужно подправить. Спасибо. Добавлено @ 10:20 Спасибо, уже разобрался. Нужно заменить dwNumber1 = 43 dwNumber2 = 15 -------------------------------- на dwNumber1 dd43 dwNumber2 dd 15 |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |