Посчитать количество слов - 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

Объяснение кода листинга программы

  1. Создаются переменные:
    • buf_n - массив байтов размером 255, предположительно для ввода строки;
    • len - переменная для хранения длины введенной строки;
    • buf - массив из 255 элементов, предположительно для хранения введенной строки;
    • inp_lbl - строка Input String: $, которая будет выводиться перед вводом строки;
    • res_lbl - строка Result: $, которая будет выводиться перед выводом результата;
    • endl - массив байтов для хранения символов перевода строки и переноса строки.
  2. В начале сегменты данных и стека инициализируются
  3. Выводится на экран Input String:, запрашивая ввод строки
  4. Считывается введенная строка
  5. Происходит подсчет количества слов в строке:
    • Инициализируется счетчик с помощью xor ax, ax и сохраняется длина строки в регистре al
    • Счетчик bx и указатель si инициализируются нулем
    • Запускается цикл c1, в котором происходит поочередное считывание символов и сравнение каждого с пробелом. Если символ не равен пробелу, счетчик cx увеличивается на единицу, иначе инкрементируется счетчик bx слов (так как пробелы разделяют слова)
    • Процесс повторяется до конца строки
    • Последний инкремент счетчика bx добавляет 1 к общему количеству слов в строке
  6. Выводится результат, количество слов, на экран
  7. Программа завершается. Таким образом, данный код скорее всего принимает строку ввода, подсчитывает количество слов в строке и выводит результат.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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