Подсчитать число единиц в заданном слове - 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.
- Выполняется переход в начало цикла.
- Выводится сообщение об успешном выполнении программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д