Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2015, 11:28   #1
Екатерина57
Пользователь
 
Регистрация: 11.10.2015
Сообщений: 63
По умолчанию Нужна помощь в создании программы

Написать программу на языке Ассемблера, которая позволяет ввести с клавиатуры строку символов латиницы, найти и вывести на экран только согласные буквы строки.Компилятор Tasm
Екатерина57 вне форума Ответить с цитированием
Старый 25.12.2015, 12:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Я только в общих чертах дам код:
Код:
s db 100 dup(' ')
...
;Вводим строку
 xor bx,bx
 xor cx,cx
 lea dx,ptr s
 mov ah,0Ah
 int 21h

;Получаем длинну введенного
 lea si,ptr s
 inc si
 xor cx,cx
 mov cl,byte [si]
 inc si

;Заряжаем цикл вывода посимвольно
for2:
 cmp [si],'a' 
  jne continuefor
 cmp [si],'е' 
  jne continuefor
 cmp [si],'о' 
  jne continuefor
... И так далее допишешь гласные

;Выводим символ
 xor ax,ax
 xor dx,dx
 mov	 ah, 2
 mov	 dl,[si]
 int	 21h		 ; DOS - PRINT CHAR
continuefor:
 inc si
loop for2
Это из архива, так что не проверял.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.12.2015, 16:33   #3
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

А ещё можно пойти таким путём..
Создаётся таблица исключений, и если такого символа в таблице нет, то её можно считать согласной. Я добавил в таблицу только пробел, заглавные и прописные буквы. Можете добавить туда цифры, знаки препинания и т.д. Размер таблицы вычисляется автоматом:

Код:
USE16
ORG 100h
JMP start

mess0   DB  13,10,' SEARCH CONSONANT LETTERS (R) ==============='
        DB  13,10,' --------------------------------------------'
        DB  13,10,' Input string: $'
mess1   DB  13,10,'       Result: $'
good    DB  13,10,' $'               ; перевод строки с бипером

output  DB  40 DUP(' '),'$'          ; буфер для согласных
table   DB  'AEIOUYaeiouy '          ; таблица исключений (с пробелом)
tSize   =   $ - table                ; размер таблицы для SCASB

start:
   MOV   AH,9                 ; запрос на ввод строки..
   MOV   DX,mess0
   INT   21h

   MOV   SI,output            ; настроим SI на буфер
find:
   MOV   DI,table             ; DI = место поиска для SCASB
   MOV   AH,1                 ; ввод с эхо средствами DOS
   INT   21h
   CMP   AL,13                ; это ENTER ?!
   JE    finish               ; да - заканчиваем ввод
@1:
   MOV   CX,tSize             ; CX = размер таблицы исключений
   REPNE SCASB                ; символ у нас в AL. Ищем его в таблице исключений
   JNZ   Agree                ; если нет такого символа, значит это согласная
   JMP   find                 ; если есть - читаем следующий символ
Agree:
   XOR   AH,AH                ; встретилась согласная.. Очищаем AH
   MOV   [SI],AX              ; ^^// и сохраняем символ в буфере по адресу SI
   INC   SI                   ; передвинем на 1 позицию в буфере
   JMP   find                 ; читаем следующий символ..

finish:                       ; юзверь нажал ENTER!
   MOV   AH,9                 ; выводим результат на экран
   MOV   DX,mess1             ; ^^// сперва выводим мессагу..
   INT   21h
   MOV   DX,output            ; ^^// потом согласные из буфера
   INT   21h
   MOV   DX,good              ; ^^// и перевод строки с бипером
   INT   21h

exit:
   XOR  AX,AX                 ; ждём клавишу и на выход!
   INT  16h
   INT  20h
Изображения
Тип файла: gif 010203.gif (8.1 Кб, 76 просмотров)
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь в создании программы на while и repeat Nikolai17 Паскаль, Turbo Pascal, PascalABC.NET 10 18.10.2009 19:02
Нужна помощь в создании программы xaker_sokol Общие вопросы Delphi 1 01.03.2009 01:21
Нужна помощь в создании программы... Gangster Общие вопросы Delphi 16 24.05.2008 14:42