[TASM] Подсчитать количество цифр в тексте - Assembler
Формулировка задачи:
как подсчитать количество цифр в тексте? текст вводить с клавиатуры, на TASM-е!
Решение задачи: «[TASM] Подсчитать количество цифр в тексте»
textual
Листинг программы
- model tiny
- .code
- org 100h
- start:
- mov ah,9
- lea dx,dbEnter
- int 21h;Выводим запрос ввода строки
- mov ah,0ah
- lea dx,dbMax
- int 21h;считываем строку
- xor cx,cx
- xor dx,dx
- mov cl,dbLen;Заносим в регистор cx длину строки (лучше movzx cx,cl)
- lea si,dbBuff;В регистре si адрес буфера
- isLoop: lodsb;Считываем очередной символ
- cmp al,'0'
- jb noSimbol
- cmp al,'9'
- ja noSimbol
- inc dx;Если символ - цифра, увеличиваем счетчик в регистре dx
- noSimbol:
- loop isLoop;Цикл по всем символам строки
- push dx;Сохраняем количество цифр
- mov ah,9
- lea dx,dbResult
- int 21h;Выводим сообщение
- pop ax;Переносим число в регистр ax
- mov bx,10
- xor cx,cx;
- isDiv: xor dx,dx
- div bx
- push dx;Отделяем последнюю цифру, размещаем её в стеке
- inc cx;Увеличиваем счетчик цифр, чтоб знать, сколько цифр доставать
- or ax,ax;Если ещё есть цифры для вывода (число не равно 0), то продолжаем деление
- jnz isDiv
- isOut: pop ax;Достаем очередную цифру (цифры достаются в обратном порядке, ибо стек
- or al,30h
- int 29h;Выводим цифру через системный вызов
- loop isOut;И так для всех полученных цифр
- xor ax,ax
- int 16h;Ожидаем нажатие клавиши
- ret;Завершаемся
- dbResult db 10,13,'Result:$'
- dbEnter db 10,13,'Enter text:$'
- dbMax db 200
- dbLen db ?
- dbBuff db 200 dup(?)
- end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д