[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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д