![]() |
|
![]() ![]() ![]() |
|
Zigmund |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 27.4.2002 Репутация: нет Всего: нет |
Здрасте всем!
Я очень нуждаюсь в Вашей срочной помощи! Объясните пожалуйста, зачем нужна комбиначия клавиш Crtl-PrScr в ДОСе? Что за моменты она обрабатывает? Работа с AUX? Фунцкии чтения драйвера консоли зачемто анализируют нажатие именно этой комбинации, и после ее обнаружения выдают как результат 16 (10h)... прилагаю фрагмент кода: ;************************************************************************ ;* * ;* chrin - input single char from keyboard into al * ;* * ;* we are going to issue extended keyboard function, if * ;* supported. the returning value of the extended keystroke * ;* of the extended keyboard function uses 0e0h in al * ;* instead of 00 as in the conventional keyboard function. * ;* this creates a conflict when the user entered real * ;* greek alpha charater (= 0e0h) to distinguish the extended * ;* keystroke and the greek alpha. this case will be handled * ;* in the following manner: * ;* * ;* ah = 16h * ;* int 16h * ;* if al == 0, then extended code (in ah) * ;* else if al == 0e0h, then * ;* if ah <> 0, then extended code (in ah) * ;* else greek_alpha character. * ;* * ;* also, for compatibility reason, if an extended code is * ;* detected, then we are going to change the value in al * ;* from 0e0h to 00h. * ;* * ;************************************************************************ chrin proc near assume ds:Bios_Data,es:nothing mov ah,keyrd_func ; set by msinit. 0 or 10h xor al,al xchg al,altah ;get character & zero altah or al,al jnz keyret int 16h ; do rom bios keyrd function alt10: or ax,ax ;check for non-key after break jz chrin cmp ax,7200h ;check for ctrl-prtsc jnz alt_ext_chk mov al,16 jmp short keyret alt_ext_chk: ;************************************************************** ; if operation was extended function (i.e. keyrd_func != 0) then ; if character read was 0e0h then ; if extended byte was zero (i.e. ah == 0) then ; goto keyret ; else ; set al to zero ; goto alt_save ; endif ; endif ; endif cmp byte ptr keyrd_func,0 jz not_ext cmp al,0e0h jnz not_ext or ah,ah jz keyret ifdef DBCS ifdef KOREA ; Keyl 1990/11/5 cmp ah, 0f0h ; If hangeul code range then jb EngCodeRange1 ; do not modify any value. cmp ah, 0f2h jbe not_ext EngCodeRange1: endif ; KOREA endif ; DBCS xor al,al jmp short alt_save not_ext: or al,al ;special case? jnz keyret alt_save: mov altah,ah ;store special key keyret: ret chrin endp |
|||
|
||||
dostamax |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 16.7.2002 Где: Donetsk Репутация: нет Всего: нет |
Vpolne vozmogno no ja ne uveren.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |