Ввод строки со словами и построчный вывод слов - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д