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