Без использования команды div организовать беззнаковое деление на 8 - Assembler
Формулировка задачи:
Как без использования команды div организовать беззнаковое деление на 8?
Решение задачи: «Без использования команды div организовать беззнаковое деление на 8»
textual
Листинг программы
org 100h mov eax, 23 xor edx, edx shrd edx, eax, 3 shr eax, 3 ; eax - частное bswap edx ; 486+, была недокументирована shr dl, 5 ; edx - остаток ret
Объяснение кода листинга программы
В этом коде без использования команды div организуется беззнаковое деление на 8. Вот что происходит по шагам:
- org 100h — инициализация сегментного регистра для обращения к коду, размещённому в сегменте с базовым адресом 100h.
- mov eax, 23 — в переменную eax записывается число 23.
- xor edx, edx — в переменную edx записывается ноль.
- shrd edx, eax, 3 — в переменную edx переносится 3-й байт из числа, на которое указывает eax (23), и сдвигается влево на 3 разряда.
- shr eax, 3 — в переменную eax переносится 1-й байт из числа, на которое указывает eax (23), и сдвигается влево на 3 разряда.
- bswap edx — беззнаковое число, на которое указывает edx (100000), изменяется на 0x000001.
- shr dl, 5 — в переменную dl (текущий байт в числе, на которое указывает edx (100000)) сдвигается влево на 5 разрядов.
- ret — команда завершения работы. Таким образом, результат беззнакового деления 23 на 8 равен 2,875 (10000011b).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д