[NASM] Определить, в каком из трёх чисел единиц больше единиц в двоичной записи - Assembler

Узнай цену своей работы

Формулировка задачи:

Дано 3 числа в двоичной системе счисления. Определить, в каком числе число единиц больше. NASM Ассемблер

Решение задачи: «[NASM] Определить, в каком из трёх чисел единиц больше единиц в двоичной записи»

textual
Листинг программы
SECTION .text
global  main
main: ; точка старта программы
    mov eax,[dat]
    mov cx,32
    xor ebx,ebx
@@: rcr eax,1
    adc bl,0
    loop    @B
;теперь ebx содержит кол-во битов-единичек в eax
SECTION .data
dat dd  1000000011111111b

Объяснение кода листинга программы

  1. Определяем точку старта программы - main.
  2. Перемещаем значение переменной dat в eax - mov eax,[dat].
  3. Перемещаем 32 в переменную cx - mov cx,32.
  4. Устанавливаем ebx в 0 - xor ebx,ebx.
  5. Начинаем цикл, который будет выполняться до тех пор, пока eax больше или равно 2 - loop @B.
  6. Внутри цикла выполняем операцию rcr eax,1, т.е. сдвигаем значение eax вправо на 1 позицию и сдвигаем в ebx единицу влево на 1 позицию (adc bl,0).
  7. Цикл выполняется до тех пор, пока все биты не будут обработаны.
  8. После выполнения цикла, в ebx будет количество единиц в двоичной записи числа, которое хранится в eax.
  9. Значение переменной dat в двоичной форме - 1000000011111111b.

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

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