Чтение символа с ожиданием
Функция 00h выполняет чтение кода символа из буфера клавиатуры, если он там есть. Если буфер клавиатуры пуст, программа переводится в состояние ожидания до тех пор, пока не будет нажата какая-нибудь клавиша. Скан-код и код ASCII нажатой клавиши передаются программе.
Приведем формат вызова функции:
Регистры на входе: | AH = 00h | ||
Регистры на выходе: | AL = код ASCII символа или 0, если AH содержит расширенный код ASCII символа;
AH = скан-код или расширенный код ASCII символа, если AL=0 |
Приведем таблицу скан-кодов:
01 | Esc | 12 | E | 23 | H | 34 | . > | 45 | NumLock | ||||||||||
02 | 1 ! | 13 | R | 24 | J | 35 | / ? | 46 | ScrLock | ||||||||||
03 | 2 @ | 14 | T | 25 | K | 36 | Shift прав. | 47 | Home [7] | ||||||||||
04 | 3 # | 15 | Y | 26 | L | 37 | PrtSc | 48 | Up [8] | ||||||||||
05 | 4 $ | 16 | U | 27 | ; : | 38 | Alt | 49 | PgUp [9] | ||||||||||
06 | 5 % | 17 | I | 28 | ‘ “ | 39 | Пробел | 4A | [-] | ||||||||||
07 | 6 ^ | 18 | O | 29 | ` ~ | 3A | CapsLock | 4B | <- [4] | ||||||||||
08 | 7 & | 19 | P | 2A | Shift лев. | 3B | F1 | 4C | [5] | ||||||||||
09 | 8 * | 1A | [ { | 2B | \ | | 3C | F2 | 4D | -> [6] | ||||||||||
0A | 9 ( | 1B | ] } | 2C | Z | 3D | F3 | 4E | [+] | ||||||||||
0B | 0 ) | 1C | Enter | 2D | X | 3E | F4 | 4F | End [1] | ||||||||||
0C | - _ | 1D | Ctrl | 2E | C | 3F | F5 | 50 | Dn [2] | ||||||||||
0D | = + | 1E | A | 2F | V | 40 | F6 | 51 | PgDn [3] | ||||||||||
0E | Bksp | 1F | S | 30 | B | 41 | F7 | 52 | Ins [0] | ||||||||||
0F | Tab | 20 | D | 31 | N | 42 | F8 | 53 | Del [.] | ||||||||||
10 | Q | 21 | F | 32 | M | 43 | F9 | ||||||||||||
11 | W | 22 | G | 33 | , < | 44 | F10 |
Для остальных клавиш функция 00h прерывания INT 16h возвращает расширенный код ASCII:
F1 | 3b | Shift+F1 | 54 | Ctrl+F1 | 5e | Alt+F1 | 68 | ||||||||
F2 | 3c | Shift+F2 | 55 | Ctrl+F2 | 5f | Alt+F2 | 69 | ||||||||
F3 | 3d | Shift+F3 | 56 | Ctrl+F3 | 60 | Alt+F3 | 6a | ||||||||
F4 | 3e | Shift+F4 | 57 | Ctrl+F4 | 61 | Alt+F4 | 6b | ||||||||
F5 | 3f | Shift+F5 | 58 | Ctrl+F5 | 62 | Alt+F5 | 6c | ||||||||
F6 | 40 | Shift+F6 | 59 | Ctrl+F6 | 63 | Alt+F6 | 6d | ||||||||
F7 | 41 | Shift+F7 | 5a | Ctrl+F7 | 64 | Alt+F7 | 6e | ||||||||
F8 | 42 | Shift+F8 | 5b | Ctrl+F8 | 65 | Alt+F8 | 6f | ||||||||
F9 | 43 | Shift+F9 | 5c | Ctrl+F9 | 66 | Alt+F9 | 70 | ||||||||
F10 | 44 | Shift+F10 | 5d | Ctrl+F10 | 67 | Alt+F10 | 71 | ||||||||
Alt+A | 1E | Alt+P | 19 | Alt+3 | 7A | Down | 50 | ||||||||
Alt+B | 30 | Alt+Q | 10 | Alt+4 | 7B | Left | 4B | ||||||||
Alt+C | 2E | Alt+R | 13 | Alt+5 | 7C | Right | 4D | ||||||||
Alt+D | 20 | Alt+S | 1F | Alt+6 | 7D | Up | 48 | ||||||||
Alt+E | 12 | Alt+T | 14 | Alt+7 | 7E | End | 4F | ||||||||
Alt+S | 21 | Alt+U | 16 | Alt+8 | 7F | Home | 47 | ||||||||
Alt+G | 22 | Alt+V | 2F | Alt+9 | 80 | PgDn | 51 | ||||||||
Alt+H | 23 | Alt+W | 11 | Alt+- | 82 | PdUp | 49 | ||||||||
Alt+I | 17 | Alt+X | 2D | Alt+= | 83 | ||||||||||
Alt+J | 24 | Alt+Y | 15 | Ctrl+Left | 73 | ||||||||||
Alt+K | 25 | Alt+Z | 2C | Ctrl+Right | 74 | ||||||||||
Alt+L | 26 | Shift+Tab | 0F | Ctrl+End | 75 | ||||||||||
Alt+M | 32 | Alt+0 | 81 | Insert | 52 | Ctrl+Home | 77 | ||||||||
Alt+N | 31 | Alt+1 | 78 | Delete | 53 | Ctrl+PgDn | 76 | ||||||||
Alt+O | 18 | Alt+2 | 79 | PrintScr | 72 | Ctrl+PgUp | 84 |
В следующей таблице приведены скан- коды клавиш, имеющихся только на 101-клавишной клавиатуре:
F11 |
85 |
Alt-Bksp |
0e |
Alt- Д / |
a4 |
F12 |
86 |
Alt-Enter |
1c |
Alt- Д * |
37 |
Shft-F11 |
87 |
Alt-Esc |
01 |
Alt- Д - |
4a |
Shft-F12 |
88 |
Alt-Tab |
a5 |
Alt- Д + |
4e |
Ctrl-F11 |
89 |
Ctrl-Tab |
94 |
Alt- Д Enter |
a6 |
Ctrl-F12 |
8a |
||||
Alt-F11 |
8b |
Alt-up Up |
98 |
Ctrl- Д / |
95 |
Alt-F12 |
8c |
Alt-down Dn |
a0 |
Ctrl- Д * |
96 |
Alt-[ |
1a |
Alt-left <- |
9b |
Ctrl- Д - |
8e |
Alt-] |
1b |
Alt-right -> |
9d |
Ctrl- Д + |
90 |
Alt-; |
27 |
|
|||
Alt-' |
28 |
Alt-Delete |
a3 |
Ctrl- Д Up [8] |
8d |
Alt-` |
29 |
Alt-End |
9f |
Ctrl- Д 5 [5] |
8f |
Alt-\ |
2b |
Alt-Home |
97 |
Ctrl- Д Dn [2] |
91 |
Alt-, |
33 |
Alt-Insert |
a2 |
Ctrl- Д Ins[0] |
92 |
Alt-. |
34 |
Alt-PageUp |
99 |
Ctrl- Д Del[.] |
93 |