[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

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

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