Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab3_asm_moi.DOC
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
108.54 Кб
Скачать

Фильтрация ввода

Практически весь символьный ввод в программах подлежит фильтрации. Фильтрация ввода состоит в том, что ожидаемые программой символы принимаются для обработки программой, а остальные отвергаются (игнорируются). При фильтрации применяются команды сравнения и условных переходов (обычно по сравнению беззнаковых операндов).

Примеры:

Ввод символа и фильтрация:

mov ah,01h

int 21h

cmp al,1Bh ; нажата клавиша «ESC»?

je exit ; если да, то выход

; продолжение, если не «ESC»

Предыдущий фрагмент имеет один недостаток: при нажатии клавиши «ESC» на консоль (экран) выводится “эхо”, в данном случае нежелательное. Лучше использовать ввод без “эха”:

mov ah,08h

int 21h

cmp al,1Bh ; нажата клавиша «ESC»?

je exit ; если да, то выход

mov dl,al ; если не «ESC»,

mov ah,02h ; то вывод символа на консоль

int 21h

; продолжение работы программы

Пример программы

Ниже приведен пример программы на языке Ассемблер, выполняющей фильтрацию ввода (пропускаются только латинские прописные буквы). Для ввода использована функция 08h DOS, т.к. прежде, чем выводить символ, необходимо выполнить фильтрацию. По клавише ESC предусмотрен выход из программы (при этом дополнительно выводится символ «!»). Сочетание Ctrl-C также прервет программу, но это будет аварийное окончание. После фильтрации допустимый символ выводится на экран функцией 02h DOS.

name filter1

; LAT CAPs only

.model small

ESC_ equ 1Bh

.code

;---------------------

start:

mov ax,@data

mov ds,ax

next:

mov ah,08h ; no echo

int 21h

cmp al,ESC_

je exit ; sym = ESC

cmp al,'A'

jb next ; sym < 'A'

cmp al,'Z'

ja next ; sym > 'Z'

mov dl,al

mov ah,02h ; sym to con

int 21h

jmp next

exit:

mov dl,’!’ ; add last symbol ‘!’

mov ah,02h

int 21h

.exit

;---------------------

end start

Задание 1. Фильтрация ввода. Выводить на экран разрешенные символы. Если вводится сочетание клавиш или управляющие коды, то выводить текст, например: «F1», «Alt-B», «Ctrl-C», «ESC», «PgUp». На запрещенные символы предусмотреть определенную реакцию (текст, звук и т.п.).

Задание 2. Преобразовать вводимые символы и вывести на экран.

Варианты заданий

№/№ вар.зад.

Ввод символов

Примечания

1.1

0..9, +,-,*,/

Фильтрация

1.2

Буквы строчные и прописные ® Только строчные

Преобразование

2.1

a..z, ?,/,<,>

Фильтрация

2.2

Буквы строчные и прописные ® Только прописные

Преобразование

3.1

A..Z, (,),:,;

Фильтрация

3.2

Буквы строчные и прописные ® Инвертировать регистр

Преобразование

4.1

Ctrl-F1..Ctrl-F10

Фильтрация

4.2

qwe asd zxc ® Псевдографика одиночная

Преобразование

5.1

Shift-F1..Shift-F10

Фильтрация

5.2

PTV QRS ASD ® Псевдографика двойная

Преобразование

6.1

F1..F10

Фильтрация

6.2

Alt-1, Alt-2, Alt-3, Alt-4 ® Псевдографика фоновая

Преобразование

7.1

Ctrl-F1..Ctrl-F10

Фильтрация

7.2

0,1,2,3,4,5,6,7,8,9 ® Цифры прописью

Преобразование

8.1

Alt-1..Alt-9

Фильтрация

8.2

н, о, д, т, ч, п, ш, с, в, е ® 0,1,2,3,4,5,6,7,8,9

Преобразование

9.1

Shift-F1..Shift-F10

Фильтрация

9.2

Русские буквы ® Латинские эквиваленты

Преобразование

10.1

Alt-F1..Alt-F10

Фильтрация

10.2

Латинские буквы ® Русские эквиваленты

Преобразование

11.1

TAB, ESC, SPACE, F11, F12

Фильтрация

11.2

Клавиши управления курсором ® Соответств. названия

Преобразование

12.1

a..z, A..Z

Фильтрация

12.2

Буквы строчные и прописные ® Только строчные

Преобразование

13.1

F-1..F-10

Фильтрация

13.2

Буквы строчные и прописные ® Только прописные

Преобразование

14.1

+,-,*,/,?,/,<,>,(,), : , ; , ! , ?

Фильтрация

14.2

F1, F2, F3, F4 ® Псевдографика фоновая

Преобразование

15.1

Up,down,left,right,PrUp,PgDn

Фильтрация

15.2

qwe asd zxc ® Псевдографика одиночная

Преобразование

16.1

A..Z

Фильтрация

16.2

Клавиши управления курсором ® Соответств. названия

Преобразование

17.1

a..z

Фильтрация

17.2

F1, F2, F3, F4 ® Псевдографика фоновая

Преобразование

18.1

TAB, ESC, SPACE, F11, F12

Фильтрация

18.2

0,1,2,3,4,5,6,7,8,9 ® Цифры прописью

Преобразование

19.1

+,-,*,/,?,/,<,>,(,), : , ; , ! , ?

Фильтрация

19.2

н, о, д, т, ч, п, ш, с, в, е ® 0,1,2,3,4,5,6,7,8,9

Преобразование

20.1

F1..F10

Фильтрация

20.2

Русские буквы прописные ® Латинские эквиваленты

Преобразование

Примечание. Можно добавить произвольные данные по своему усмотрению.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]