Сделать заглавным средний символ слова - Assembler (223659)
Формулировка задачи:
Надо написать программу, которая будет принимать с консоли строку и символ. Необходимо оставить только те слова, содержащие этот символ, и вывести их в консоль.
Помогите. Пожалуйста.
Решение задачи: «Сделать заглавным средний символ слова»
textual
Листинг программы
- ; fasm code...
- org 100h
- jmp start
- mes0 db 13,10,'Type symbol: $'
- mes1 db 13,10,'Type string: $'
- mes2 db 13,10,'----------------------',13,10,'$'
- crlf db 13,10,'$'
- char db 0 ; символ для поиска
- poss dw 10 dup(0) ; позиции найденых слов (макс.10)
- buff db 80 dup(0) ; буфер для строки
- start: mov dx,mes0
- call Message
- mov ah,1 ; вводим символ для поиска
- int 21h
- mov [char],al ; запомнить его..
- ;---------------------------------------------------
- mov dx,mes1
- call Message
- mov di,buff ; приёмник для строки
- mov bp,poss ; BP = позиция слова
- @1: xor bl,bl ; сбросим флаг найденного слова
- mov [bp],di ; запомнить адрес начала слова
- add bp,2
- @inp: mov ah,1 ; принимаем строку..
- int 21h
- stosb ; сохраняем её в ES:DI
- cmp al,13 ; Enter - выход!
- je @stop
- cmp al,[char] ; есть нужная буква в слове?
- jne @fuck
- inc bl ; да - флаг найденного.
- @fuck: cmp al,' ' ; после пробела, начать всё/сначала
- je @next
- jmp @inp
- @next: or bl,bl ; была такая буква в слове?
- jne @ok
- sub bp,2
- mov word[bp],0 ; нет! Обнуляем адрес начала слова
- @ok: jmp @1 ; да - на следующее слово в строке..
- ;---------------------------------------------------
- @stop: mov dx,mes2 ; Юзер закончил ввод.
- call Message
- mov bp,poss ; указатель на позицию слова в строке
- @prn: mov si,[bp]
- or si,si ; это последнее слово?
- je @exit
- add bp,2 ; нет - сдвигаем указатель
- @2: lodsb ; выводим все символы слова
- cmp al,' ' ; ..до пробела,
- je @3
- cmp al,13 ; ..или до точки в конце строки
- je @exit
- int 29h ; печать символов на экране.
- jmp @2
- @3: mov dx,crlf ; вывели очередное слово.
- call Message ; перевод строки.
- jmp @prn ; выводим сл.слово..
- ;---------------------------------------------------
- @exit: xor ax,ax ; ждём любую клавишу..
- int 16h
- int 20h ; выход в DOS!!!
- ;eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
- Message: ;<------; функция вывода сообщений
- mov ah,9
- int 21h
- ret
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д