Ввод строки со словами и построчный вывод слов - Assembler

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

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

11. Ввести с клавиатуры строку, состоящую из нескольких слов. Вывести каждое слово на экран в отдельной строке, т.е. выдать слова в столбик- это надо сделать

Решение задачи: «Ввод строки со словами и построчный вывод слов»

textual
Листинг программы
  1. .model small
  2.  
  3. .stack 100h
  4.  
  5. .data
  6.         kbBuf           db      80, ?, 80 dup(0)        ;буфер клавиатуры для ввода строки
  7.         CrLf            db      0Dh, 0Ah, '$'           ;символы перевода строки
  8.         Delimiter       db      ' '                     ;разделитель слов в строке
  9. .code
  10.  
  11. main    proc
  12.         mov     ax,     @data
  13.         mov     ds,     ax
  14.  
  15.         ;ввод строки в буфер клавиатуры
  16.         mov     ah,     0Ah
  17.         lea     dx,     kbBuf
  18.         int     21h
  19.         ;перевод строки
  20.         mov     ah,     09h
  21.         lea     dx,     CrLf
  22.         int     21h
  23.  
  24.         ;инициализация для построчной печати слов
  25.         mov     cx,     0       ;cx - длина строки
  26.         mov     cl,     kbBuf+1
  27.         jcxz    @@Exit          ;если строка пустая - завершить программу
  28.         lea     si,     kbBuf+2 ;si - адрес первого символа строки
  29.         mov     ah,     02h     ;ah - функция вывода символа (ah=02h int 21h)
  30. @@For:
  31.         lodsb                   ;чтение очередного символа в al, увеличение si на 1
  32.         cmp     al,     Delimiter       ;очередной символ - разделитель слов?
  33.         je      @@NewLine               ;да - перейти к строкам, выполняющим перевод строки
  34.         mov     dl,     al              ;нет - вывести очередной символ на экран
  35.         int     21h
  36.         loop    @@For           ;
  37.         jmp     @@Break
  38. @@NewLine:
  39.         mov     dl,     0Dh     ;команды перевода строки
  40.         int     21h
  41.         mov     dl,     0Ah
  42.         int     21h
  43.         loop    @@For
  44. @@Break:
  45.         mov     ah,     09h     ;после последнего слова перевести строку
  46.         lea     dx,     CrLf
  47.         int     21h
  48.  
  49. @@Exit:
  50.         mov     ax,     4C00h   ;завершение программы
  51.         int     21h
  52. main    endp
  53.  
  54. end     main

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


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

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

14   голосов , оценка 4 из 5

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

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

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