Подсчитать число единиц в заданном слове - Assembler

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

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

Подсчитать число единиц в заданном слове.

Решение задачи: «Подсчитать число единиц в заданном слове»

textual
Листинг программы
.model small
 
.stack 100h
 
.data
        CrLf    db      0Dh, 0Ah, '$'
        X       dw      1234h
        Count   dw      0
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        mov     ax,     X       ;заданное слово
        mov     bx,     0       ;число единичных бит в слове
        mov     cx,     16      ;размер слова в битах
@@For:
        shl     ax,     1       ;выделение очередного бита
        adc     bx,     0
 
        loop    @@For
        mov     Count,  bx
 
 
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main

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

  1. Объявлены переменные: — CrLf (символьный) — строка, содержащая символы перевода строки; — X (дробное) — содержит заданное слово; — Count (целочисленное) — счётчик числа единиц.
  2. Задано значение регистрам: — AX — содержит байт, в котором при помощи операции сдвига выделен очередной бит; — BX — инициализируется нулём и используется как счётчик числа единиц; — CX — содержит размер слова в битах.
  3. Используется цикл «For» для перебора всех битов заданного слова: — В каждой итерации очередная единица сдвигается в старшую позицию, при этом в BX устанавливается 1; — После каждой итерации счётчик BX увеличивается на единицу.
  4. После выполнения цикла значение счётчика BX сохраняется в переменной Count.
  5. Выполняется переход в начало цикла.
  6. Выводится сообщение об успешном выполнении программы.

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

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