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