Количество единиц в двоичном коде введённого символа - 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

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

  1. Установка регистра AH в 1.
  2. Вызов прерывания 21h для ввода символа.
  3. Установка регистра CX в 8.
  4. Установка регистра DL в '0'.
  5. Цикл по блоку B, где происходит добавление единицы к регистру AL и обновление регистра DL.
  6. Вызов прерывания 21h для вывода символа.
  7. Установка регистра AX в 4C00h.
  8. Вызов прерывания 21h для завершения работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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