Посчитать количество слов - Assembler

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

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

Введите строку символов, состоящую из слов, разделенных пробелом. Подсчитайте количество слов. Строку и количество вывести на экран

Решение задачи: «Посчитать количество слов»

textual
Листинг программы
  1. .model small
  2. .stack 100h
  3. .data
  4.     buf_n db 255
  5.     len db ?
  6.     buf 255 dup ('$')
  7.    
  8.     inp_lbl db 'Input String: $'
  9.     res_lbl db 'Result: $'
  10.    
  11.     endl db 13,10,'$'
  12.  
  13. .code
  14. begin:
  15.     mov ax, @data
  16.     mov ds, ax
  17.     mov es, ax
  18.    
  19.     mov ah, 9
  20.     lea dx, inp_lbl
  21.     int 21h
  22.  
  23.     mov ah, 0Ah
  24.     lea dx, buf_n
  25.     int 21h  
  26.     xor ax, ax
  27.     mov al, len
  28.     mov bx, ax      
  29.     mov buf[bx], '$'      
  30.     lea si, buf
  31.     xor cx, cx  
  32.     mov cl, len
  33.     xor bx, bx  
  34.    
  35. c1: lodsb
  36.     cmp al,' '
  37.     jne s
  38.     inc bx  
  39. s:loop c1  
  40.  
  41.     inc bx      
  42.     lea dx, endl
  43.     mov ah, 9
  44.     int 21h
  45.     lea dx, buf
  46.     int 21h    
  47.     lea dx, endl
  48.     int 21h
  49.     lea dx, res_lbl
  50.     int 21h
  51.     mov dx, bx
  52.     add dx, '0'
  53.     mov ah, 2
  54.     int 21h
  55.     mov ah, 4ch
  56.     int 21h    
  57. ends
  58.  
  59. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы