Найти частоту использования букв в тексте - Assembler

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

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

Доброго времени суток! Нужна помощь с написанием программы. Её задача заключается в том, чтобы подсчитать частоту потребления букв в введённом тексте ASCII-формата. Я примерно понимаю, что она должна делать(обработать текст, проверить каждый символ на букву, если буква, то увеличить счётчик, а по окончанию вывести его на кран), а вот как реализовать всю эту жуть на ассемблере - в этом и заключается весь траббль.

Решение задачи: «Найти частоту использования букв в тексте»

textual
Листинг программы
; fasm code.....
org 100h                      ; делаем com-файл
jmp start                     ;
 
mes0    db  13,10,' Введите массив: $'
mes1    db  13,10,' Букв в массиве: $'
 
start:  mov   ah,9            ; запрос на ввод
        mov   dx,mes0         ;
        int   21h             ;
        xor   cx,cx           ; очищаем счётчик найденых
        mov   ah,1            ; ввод с эхо средствами DOS
save:   int   21h             ;
        cmp   al,13           ; Enter - закончить ввод!
        je    next            ;
        cmp   al,'A'          ; пропустить, если меньше заглавной(А)
        jb    digit           ;
        cmp   al,'z'          ; пропустить, если больше прописной(z)
        ja    digit           ;
        inc   cx              ; остальные считаем (СХ+1)
digit:  jmp   save            ; сл.символ с клавы..
 
next:   push  cx              ; запомним счётчик в стеке
        mov   ah,9            ; выводим сообщение
        mov   dx,mes1         ;
        int   21h             ;
 
        pop   ax              ; АХ = счётчик со-стека
        aam                   ; переводим его в распакованное/десятичное (BCD)
        add   ax,3030h        ; делаем из BCD, символы ASCII
        xchg  ah,al           ; меняем их местами
        int   29h             ; выводим на экран первую цифру (разряд числа)
        xchg  ah,al           ;
        int   29h             ;    ..и следом вторую.
 
exit:   xor   ax,ax           ; ждём клавишу..
        int   16h             ;
        int   20h             ; на выход!

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

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