Посчитать количество слов - Assembler
Формулировка задачи:
Введите строку символов, состоящую из слов, разделенных пробелом. Подсчитайте количество слов. Строку и количество вывести на экран
Решение задачи: «Посчитать количество слов»
textual
Листинг программы
.model small
.stack 100h
.data
buf_n db 255
len db ?
buf 255 dup ('$')
inp_lbl db 'Input String: $'
res_lbl db 'Result: $'
endl db 13,10,'$'
.code
begin:
mov ax, @data
mov ds, ax
mov es, ax
mov ah, 9
lea dx, inp_lbl
int 21h
mov ah, 0Ah
lea dx, buf_n
int 21h
xor ax, ax
mov al, len
mov bx, ax
mov buf[bx], '$'
lea si, buf
xor cx, cx
mov cl, len
xor bx, bx
c1: lodsb
cmp al,' '
jne s
inc bx
s:loop c1
inc bx
lea dx, endl
mov ah, 9
int 21h
lea dx, buf
int 21h
lea dx, endl
int 21h
lea dx, res_lbl
int 21h
mov dx, bx
add dx, '0'
mov ah, 2
int 21h
mov ah, 4ch
int 21h
ends
end begin
Объяснение кода листинга программы
- Создаются переменные:
buf_n- массив байтов размером 255, предположительно для ввода строки;len- переменная для хранения длины введенной строки;buf- массив из 255 элементов, предположительно для хранения введенной строки;inp_lbl- строкаInput String: $, которая будет выводиться перед вводом строки;res_lbl- строкаResult: $, которая будет выводиться перед выводом результата;endl- массив байтов для хранения символов перевода строки и переноса строки.
- В начале сегменты данных и стека инициализируются
- Выводится на экран
Input String:, запрашивая ввод строки - Считывается введенная строка
- Происходит подсчет количества слов в строке:
- Инициализируется счетчик с помощью
xor ax, axи сохраняется длина строки в регистреal - Счетчик
bxи указательsiинициализируются нулем - Запускается цикл
c1, в котором происходит поочередное считывание символов и сравнение каждого с пробелом. Если символ не равен пробелу, счетчикcxувеличивается на единицу, иначе инкрементируется счетчикbxслов (так как пробелы разделяют слова) - Процесс повторяется до конца строки
- Последний инкремент счетчика
bxдобавляет 1 к общему количеству слов в строке
- Инициализируется счетчик с помощью
- Выводится результат, количество слов, на экран
- Программа завершается. Таким образом, данный код скорее всего принимает строку ввода, подсчитывает количество слов в строке и выводит результат.