Написание программы с выводом цифр и их подсчёт - Assembler

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

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

Здравствуйте Может кто подсказать что нужно добавить чтоб была проверка на нажатие 10 цифр ( допустим нажал 1,2,3,4,5,6,7,8,9,0 прошло, нажал другой символ - выдавало ошибку)?
.data
help db "Vvedite chislo.",0Ah,0Dh,'$'
count db 0
 
.code
main proc
    mov ax,@data
    mov ds,ax
    
    mov ah,9
    mov dx,offset help
    int 21h

    mov cx,10  
    mov count,0
    
@1:   

    mov ah,8
    int 21h    ; AL
    
;---------------------- 
;тут должна быть проверка, но что должно быть, не пойму...
;---------------------- 
 
    mov dl,al
    mov ah,2
    int 21h
    
    inc count
    add count,30h
    mov ah,2
    mov dl,count
    int 21h  
                
    loop @1

    mov ax,4C00h
    int 21h
    
main endp
end main

Решение задачи: «Написание программы с выводом цифр и их подсчёт»

textual
Листинг программы
.data
help db "Vvedite chislo.",0Ah,0Dh,'$'
count db 0
 
.code
main proc
    mov ax, @data
    mov ds, ax
    
    mov ah, 9
    mov dx, offset help
    int 21h
    
    mov cx, 10  
    mov count, 0
    
@1:    
    mov ah, 8
    int 21h       ; AL
    
    sub al, '0'
 
    cmp al, 9
    ja skip
 
    mov dl, al
    add dl, 30h
    mov ah,2
    int 21h
    
    inc count
    mov ah,2
    mov dl,count
    add dl, 30h
    int 21h  
       
    skip:         
    loop @1  
       
    mov ax, 4C00h
    int 21h
    
main endp
end main

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

.data help db Vvedite chislo.,0Ah,0Dh,'$' count db 0 .code main proc mov ax, @data mov ds, ax mov ah, 9 mov dx, offset help int 21h mov cx, 10 mov count, 0 @1: mov ah, 8 int 21h ; AL sub al, '0' cmp al, 9 ja skip mov dl, al add dl, 30h mov ah,2 int 21h inc count mov ah,2 mov dl,count add dl, 30h int 21h
skip:
loop @1
mov ax, 4C00h int 21h main endp end main В этом коде используется язык Assembler. Постановка задачи — написание программы, которая считывает цифры, введенные пользователем, и подсчитывает их количество. Описание работы:

  1. .data — раздел для определения данных. В нем указывается строка, которая выводится на экран для считывания числа, и переменная для хранения количества подсчитанных цифр.
  2. .code — раздел для определения кода программы.
  3. main proc — определение точки входа в программу.
  4. mov ax, @data — установка регистра ax в качестве сегмента данных.
  5. mov ds, ax — установка дескриптора сегмента данных.
  6. mov ah, 9 — установка регистра ah в качестве регистра функции.
  7. mov dx, offset help — передача в функцию вывода строки, находящейся по адресу help.
  8. int 21h — вызов функции вывода.
  9. mov cx, 10 — установка регистра cx в качестве счётчика циклов.
  10. mov count, 0 — инициализация переменной count.
  11. @1: — метка начала цикла.
  12. mov ah, 8 — установка регистра ah в качестве регистра функции.
  13. int 21h — считывание числа с помощью функции ввода.
  14. sub al, '0' — удаление ведущего нуля у считанного числа.
  15. cmp al, 9 - сравнение считанной цифры с цифрой 9.
  16. ja skip — если считанная цифра больше или равна 9, то переход к метке skip.
  17. mov dl, al — копирование считанной цифры в регистр dl.
  18. add dl, 30h — преобразование цифры в символьный формат.
  19. mov ah,2 — установка регистра ah в качестве регистра функции.
  20. int 21h — вывод символа на экран с помощью функции ввода.
  21. inc count — увеличение счётчика на единицу.
  22. mov ah,2 — установка регистра ah в качестве регистра функции.
  23. mov dl, count — копирование счётчика в регистр dl.
  24. add dl, 30h — преобразование счётчика в символьный формат.
  25. int 21h — вывод символа на экран с помощью функции вводa.
  26. loop @1 - переход к началу цикла.
  27. mov ax, 4C00h — установка регистра ax в качестве кода завершения работы программы.
  28. int 21h — вызов функции завершения работы программы.
  29. main endp — определение конца точки входа в программу.
  30. end main — определение конца программы.

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


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

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

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