Без использования команды 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. Вот что происходит по шагам:

  1. org 100h — инициализация сегментного регистра для обращения к коду, размещённому в сегменте с базовым адресом 100h.
  2. mov eax, 23 — в переменную eax записывается число 23.
  3. xor edx, edx — в переменную edx записывается ноль.
  4. shrd edx, eax, 3 — в переменную edx переносится 3-й байт из числа, на которое указывает eax (23), и сдвигается влево на 3 разряда.
  5. shr eax, 3 — в переменную eax переносится 1-й байт из числа, на которое указывает eax (23), и сдвигается влево на 3 разряда.
  6. bswap edx — беззнаковое число, на которое указывает edx (100000), изменяется на 0x000001.
  7. shr dl, 5 — в переменную dl (текущий байт в числе, на которое указывает edx (100000)) сдвигается влево на 5 разрядов.
  8. ret — команда завершения работы. Таким образом, результат беззнакового деления 23 на 8 равен 2,875 (10000011b).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы