Анимация
JavaScript
|
Главная Библионтека Ввод символа с ожиданием и выдачей эха Вводит символ из буфера клавиатуры и отображает его на экране в текущей позиции курсора. При отсутствии символа ждет ввода. Выполняет обработку Ctrl-C. Для чтения расширенных кодов ASCII необходимо повторное выполнение функции. Допустимо перенаправление ввода. При вызове: АН =01h. При возврате: AL - байт входных данных (ASCII-код). Ввод-вывод символа В режиме ввода читает код символа из буфера клавиатуры. При отсутствии символа возвращает управление вызвавшей программе. Для чтения расширенных кодов ASCII необходимо повторное выполнение функции. В режиме вывода выдает символ на экран в текущую позицию курсора. При задании кодов управляющих символов выполняются соответствующие им действия. Допустимо перенаправление ввода-вывода. При вызове: AH=06h; DL - код символа (О О h - FEh) (при выводе); DL = FFh (при вводе). При возврате: если символ есть, ZF = О, AL - байт входных данных; если символа нет, Z F = 1 (при вводе). Ввод символа с ожиданием без эха Вводит символ из буфера клавиатуры. При отсутствии символа ждет ввода. Выполняет обработку Ctrl-C. Для чтения расширенных кодов ASCII необходимо повторное выполнение функции. Допустимо перенаправление ввода. При вызове: АН = 08h. При возврате: д1 - байт входных данных (ASCII-код). Ввод строки символов Вводит строку длиной до 254 символов и отображает ее на экране. Строка должна заканчиваться символом возврата каретки (ODh), т. е. ввод заканчивается при нажатии на Enter. До этого момента разрешается выполнять операции редактирования строки. При попытке ввести больше символов, чем задано, лишние символы игнорируются и выдается звуковой сигнал. Выполняет обработку Ctrl-C. Допустимо перенаправление ввода. При вызове: АН = OAh; DS: DX - адрес буфера пользователя. При возврате: заполненный буфер; формат буфера: байт О - ожидаемая длина строки с учетом символа возврата каретки (указывается при вызове), байт 1 - фактическая длина строки (заполняется функцией перед возвратом), байт 2 и последующие - строка символов, заканчивающаяся кодом ODh (заполняется функцией в процессе ввода символов). Проверка состояния клавиатуры Проверяет наличие символа в буфере клавиатуры. Выполняет обработку Ctrl-C. Допустимо перенаправление ввода. При вызове: АН = OBh. При возврате: Al = о - нет символа; Al = pph есть символ. Ассемблер в задачах защ итъ1 информац Очистка буфера клавиатуры и ввод Очищает кольцевой буфер клавиатуры и активизирует заданную функцию ввода (например, Olh, 08h, OAh). При вызове: АН = ОСЬ; AL - требуемая функция ввода; DS: DX - адрес буфера пользователя (если AL = OAh). При возврате: AL - байт входных данных (если при вызове AL не равно OAh); заполненный буфер (если при вызове AL = OAh). Рассмотрим некоторые функции BIOS, вызываемые по прерыванию INT 16h. Чтение 16-разрядного кода из буфера клавиатуры Читает скен-код и ASCII-код символа из буфера клавиатуры. Если буфер пуст, ожидает ввода. При вызове: АН = OOh. При возврате: АН - скен-код или информационный (старщий) байт расширенного кода; AL - ASCII-код символа или младший (нулевой) байт расширенного кода. Примечание. Для 101/102 key и 122 key клавиатуры имеются аналогичные функции, соответственно lOhnlOh. Проверка наличия символа и чтение 16-разрядного кода без извлечения его из буфера клавиатурь Определяет, есть или нет в буфере клавиатуры символы, ожидающие ввода. Если символ имеется, считывает его код без извлечения последнего из буфера (101/102 key)- Глава 1 Основы программирования на Ассемблере IBM PC 6; При вызове: АН = Olh. При возврате: 2 F = О, АН - скен-код, AL - ASCII-код символа, если символ есть; 2F = 1, если символа нет. Чтение состояния клавиатурь Считывает слово флагов клавиатуры (101/102 key). При вызове: АН = 02h. , При возврате: АХ - слово флагов клавиатуры: AL - младший байт: разряд О - нажата правая клавиша Shift, нажата левая клавиша Shift, нажата любая клавиша Ctrl, - нажата любая клавиша Alt, - включен режим Scroll Lock, - включен режим Num Lock, - включен режим Caps Lock, - включен режим Ins; АН - старщий байт: разряд О - нажата левая клавиша Ctrl, нажата левая клавиша Alt, нажата правая клавиша Ctrl, нажата правая клавиша Alt, нажата клавиша Scroll Lock, - нажата клавиша Num Lock, - нажата клавиша Caps Lock, - нажата клавиша Sys Rq. разряд 1 разряд 2 -разряд 3 -разряд 4 -разряд 5 разряд 6 разряд 7 разряд 1 -разряд 2 -разряд 3 -разряд 4 разряд 5 разряд 6 разряд 7 • 1.2.10.2. Вывод текстовой информации на экран Вывод информации на экран в текстовом режиме можно осуществить одним из трех способов: S использование файловой функции DOS 40h с помощью прерывания INT 21h (см. раздел 1.2.8); ш использование группы функций ввода-вывода DOS с номерами из диапазона Olh ... OCh с помощью прерывания INT 21 h; Ш обращение к драйверу экрана с помощью прерывания INT lOh; Я прямая запись в видеобуфер. Рассмотрим некоторые функции DOS, вызываемые по прерыванию INT 21Ь. Вывод символа Выводит символ на экран в текущую позицию курсора. При задании кодов управляющих символов выполняются соответствующие им действия. Выполняет обработку Ctrl-C. Допустимо перенаправление вывода. При вызове: АН = 02h. При возврате: DL - байт выходных данных. Вывод строки символов Вывод на экран строки символов из буфера пользователя. Вывод заканчивается при обнаружении символа "$". При задании кодов управляющих символов выполняются соответствующие им действия. Выполняет обработку Ctrl-C. Допустимо перенаправление вывода. При вызове: АН = 0 9h; D S : D X - адрес буфера пользователя. Рассмотрим организацию текстового видеобуфера. Информация, отображаемая на экране, хранится в системной области оперативной памяти, называемой видеобуфером В памяти может одновременно хранится 8 независимых изображений - страниц, одна i" которых является активной. Любое изменение содержимого активной видеостраницы немедленно отражается на экране. В текстовом режиме изображение обычно состоит из
мерцание-символа или яркость фона яркость символа-или выбор блока знакогенератора
-,-----1-----,yyia vna примере нулевой видеостраницы) Рассмотрим некоторые функции BIOS, вызываемые по прерыванию INT lOh. 25 строк по 80 символов в каждой строке. Каждый символ и фон за ним могут принимать независимо один из 16 цветов. "1инимать Текстовые страницы адаптера EGA располагаются в памяти по следующим адресам-страница О - В8000Ь ... B8F40h; страница 1 -B9000h ... B9F40h; страница 2 - BAOOOh ... BAF40h; страница 3 - BBOOOh ... BBF40h; страница 4 - BCOOOh ... BCF40h; страница 5 - BDOOOh ... BDF40h; страница 6 - BEOOOh ... BEF40h; страница 7 - BFOOOh ... BFF40h. Каждой символ занимает в буфере 16-разрядное поле, при этом один байт отводится под ASCII-код, другой - под атрибуг символа (рис. 1.2.5). Коды символов запись.ваются в том порядке, в котором они должны появляться на экране. B800h:0001 B800h; 0002 B800h: 0003 BSOOh; 0004 0 1 2 3 4 5 6 7 [ 8 ] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |