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

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

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

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

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

textual
Листинг программы
.model small
 
.stack 100h
 
.data
        kbBuf           db      80, ?, 80 dup(0)        ;буфер клавиатуры для ввода строки
        CrLf            db      0Dh, 0Ah, '$'           ;символы перевода строки
        Delimiter       db      ' '                     ;разделитель слов в строке
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        ;ввод строки в буфер клавиатуры
        mov     ah,     0Ah
        lea     dx,     kbBuf
        int     21h
        ;перевод строки
        mov     ah,     09h
        lea     dx,     CrLf
        int     21h
 
        ;инициализация для построчной печати слов
        mov     cx,     0       ;cx - длина строки
        mov     cl,     kbBuf+1
        jcxz    @@Exit          ;если строка пустая - завершить программу
        lea     si,     kbBuf+2 ;si - адрес первого символа строки
        mov     ah,     02h     ;ah - функция вывода символа (ah=02h int 21h)
@@For:
        lodsb                   ;чтение очередного символа в al, увеличение si на 1
        cmp     al,     Delimiter       ;очередной символ - разделитель слов?
        je      @@NewLine               ;да - перейти к строкам, выполняющим перевод строки
        mov     dl,     al              ;нет - вывести очередной символ на экран
        int     21h
        loop    @@For           ;
        jmp     @@Break
@@NewLine:
        mov     dl,     0Dh     ;команды перевода строки
        int     21h
        mov     dl,     0Ah
        int     21h
        loop    @@For
@@Break:
        mov     ah,     09h     ;после последнего слова перевести строку
        lea     dx,     CrLf
        int     21h
 
@@Exit:
        mov     ax,     4C00h   ;завершение программы
        int     21h
main    endp
 
end     main

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


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

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

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