Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Листинг 3.5. Получение скан-кодов с клавиатуры.

Листинг 2.3. Модифицированная версия Add_Int. | Листинг 2.4. Корректировка регистра SP. | Листинг 2.5. Программа Timer. | Листинг 2.7. Ассемблерная часть примера. | Листинг 2.9. Си-функция, тестирующая видеорежим (SETMOPEC.C). | Листинг 2.11, Программа на Си для тестирования программы 2.10 (FILLC.C). | ОСНОВЫ РАБОТЫ С УСТРОЙСТВАМИ ВВОДА | Листинг 3.1. Чтение кнопок джойстика. | Листинг 3.2. Чтение позиции джойстика. | Листинг 3.3. Программа работы с джойстиком (JOY.C). |


Читайте также:
  1. Алюминий: физические свойства, получение, применение, история
  2. В целях реализации права на получение квалификационных категорий медицинскими средними специалистами создается аттестационная комиссия медицинской службы Балтийского флота.
  3. Глава 26. ГАРАНТИИ И КОМПЕНСАЦИИ РАБОТНИКАМ, СОВМЕЩАЮЩИМ РАБОТУ С ПОЛУЧЕНИЕМ ОБРАЗОВАНИЯ
  4. Глава 6. Язык любви №3: Получение подарков
  5. Дарение — получение
  6. Дарение-получение
  7. Инкассовые поручения. Получение ссуды под инкассо. Авансовый платеж. Оплата после отгрузки. Торговля по открытому счету.

unsigned char Get_Scan_Code(void)

{

// получить скан-код нажатой клавиши

// используется встроенный ассемблер

//клавиша нажата?

_asm

{

mov ah,01h;функция Olh - проверка на нажатие клавиш

int 16h;вызвать прерывание

jz empty;нет нажатых клавиш — выходим

mov ah,00h;функция 0 - получить скан-код

int 16h;вызвать прерывание

mov al,ah;результат поместить в AL

xor ah,ah;обнуляем АН

jmp done;в AX возвращается значение "все в порядке"

empty:

xor ax,ax;очистить AX

done:

} // конец ассемблерного блока

} // конец функции

Мы опять используем встроенный ассемблер. Можно, было, конечно, использовать функцию BIOS через вызов _int86() в Си, но на встроенном ассемблере это выглядит намного круче.

Получение ASCII-кодов с клавиатуры

Давайте теперь посмотрим, как мы можем получить ASCII-символ, введенный с клавиатуры. Это может быть полезно, когда игрок вводит свое имя и нам нужны ASCII-коды. Мы можем получить скан-коды и транслировать их в ASCII, но к чему такие сложности, если сразу можно прочитать ASCII-коды?

Листинг 3.6 показывает функцию, которую мы будем часто использовать, работая с клавиатурой. Эта программа опрашивает клавиши и определяет их нажатие. Если символ введен, то функция возвращает его ASCII-код, в противном случае возвращается 0.


Дата добавления: 2015-07-12; просмотров: 96 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Bios INT 16h| Листинг 3.7. Демонстрационная программа работы с клавиатурой (KEY.C).

mybiblioteka.su - 2015-2024 год. (0.01 сек.)