Количество единиц в двоичном коде введённого символа - Assembler/TASM
Формулировка задачи:
Программа должна выводить кол-во единиц двоичного кода вводимого символа..а выдает всякие ошибки типа нет памяти, или входит в беск,рекурсию, как я понимаю
s segment 'stack' stack dw 64 dup(?) s ends d segment 'data' sym db ? endl db 13, 10, '$' d ends c segment 'code' assume cs:c, ds:d, ss:s pr proc far push ds xor ax, ax push ax mov ax, d mov ds, ax ;--------------------- mov ah, 1 int 21h xor dx, dx xor si, si ;schetchik mov cl, 8 l: shl al, 1 jnc metka ;perexod, esli cf=0 inc si metka: loop l mov ah, 2 mov dx, si int 21h pr endp c ends end pr
Решение задачи: «Количество единиц в двоичном коде введённого символа»
textual
Листинг программы
model small .data .stack .code A: mov ah,1 int 21h mov cx,8 mov dl,'0' B: add al,al adc dl,0 loop B mov ah,2 int 21h mov ax,4c00h int 21h end a
Объяснение кода листинга программы
- Установка регистра AH в 1.
- Вызов прерывания 21h для ввода символа.
- Установка регистра CX в 8.
- Установка регистра DL в '0'.
- Цикл по блоку B, где происходит добавление единицы к регистру AL и обновление регистра DL.
- Вызов прерывания 21h для вывода символа.
- Установка регистра AX в 4C00h.
- Вызов прерывания 21h для завершения работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д