Тема: Ассемблер Страниц: 1 | Прочитано 910 раз |
Tanto
Гость
|
|
Ассемблер « от 08.12.2003 в 01:58:15 » |
|
====НАРОД==== Есть здесь кто шарит в "ассемблере"? Передо мной стоит задача При каждом нажатии клавиши должно выодится ее значение на экран. Нажали "А" и на экране появляется "А". Нажатия шифтов и альтов тоже обрабатываются. Но еще остаются функциональные клавиши. Как обрабатывать их скан-код и выводить сообщение о них на экран, ровно как и комбинации с шифтом и альтом? Также и нажатия капс лоск и нам лок? Ведь это не алфавитно-цифровые клавиши, а управляющие. И насколько я понимаю, они имеют обозначаются в 2-байтном дополнительном АСКИ-коде, а сканировать и выводить на экран я могу только однобайтные скан-коды. Доп АСКИ-код впервом байте всегда имеет нулевое значение. В аттаче два варианта, которые обрабатывают нажатия клавиши, но не делают этого до конца. Буду пренамного благодарен, если кто-нибудь решит эту задачу к пятнице 13 дек.
|
|
Зарегистрирован |
|
|
|
Psyho [ПсихоПакос :))]
Прирожденный Джаец
Я сказал в морг, значит в морг
Пол: Репутация: +184
|
|
Re: Ассемблер « Ответ #1 от 11.12.2003 в 10:58:39 » |
|
//Самый простой вариант без Alt, Ctrl, Shift, NumLock, CapsLock (их можно получить только как флаги) .model TINY .code org 100h start: push cs pop ds label1: mov ax, 0100h int 16h jz label1 mov ax, 0000h int 16h cmp al, 0 jnz smb mov al, ah smb: mov dl, al mov ax, 0200h int 21h cmp al, 27 jnz label1 exit: mov ax, 4c00h int 21h end start
|
|
Зарегистрирован |
Почему не выпускают швейцарских ножей для сисадмина? Чтоб в наборе крестовая отвертка, флешка, паяльник, обжимник, мини-ствол с одним патроном и гравировкой "себе или главбуху"..
|
|
|
Tanto
Гость
|
|
Re: Ассемблер « Ответ #2 от 21.12.2003 в 00:45:54 » |
|
По ходу дела вот что треба ей от меня .model small CODES SEGMENT 'code' ASSUME CS:CODES org 100h MAIN: mov ah,0 int 16h ;-------------------- f cmp ah,59 jz f1 cmp ah,62 jz f4 cmp ah,68 jz f10 ;--------------------shift_f cmp ah,84 jz sf1 cmp ah,85 jz sf2 cmp ah,93 jz sf10 ;--------------------ctrl_f cmp ah,94 jz cf1 cmp ah,95 jz cf2 cmp ah,103 jz cf10 ;--------------------alt_f cmp ah,104 jz af1 cmp ah,105 jz af2 cmp ah,113 jz af10 ;-------------------- jmp A ;-------------------- f1: mov ah,9 mov dx, offset mef1 int 21h jmp exit f4: mov ah,9 mov dx, offset mef4 int 21h jmp exit f10: mov ah,9 mov dx, offset mef10 int 21h jmp exit ;------------------ sf1: mov ah,9 mov dx, offset mesf1 int 21h jmp exit sf2: mov ah,9 mov dx, offset mesf2 int 21h jmp exit sf10: mov ah,9 mov dx, offset mesf10 int 21h jmp exit ;------------------- cf1: mov ah,9 mov dx, offset mecf1 int 21h jmp exit cf2: mov ah,9 mov dx, offset mecf2 int 21h jmp exit cf10: mov ah,9 mov dx, offset mecf10 int 21h jmp exit ;----------------- af1: mov ah,9 mov dx, offset meaf1 int 21h jmp exit af2: mov ah,9 mov dx, offset meaf2 int 21h jmp exit af10: mov ah,9 mov dx, offset meaf10 int 21h jmp exit ;----------------- A: mov ah,0ah mov cx,1 ; выводим один символ mov bh,0 ; страница 0 int 10h jmp Main ;----------------- exit: mov ah,4ch int 21h mef1 db 0dh,0ah, "You press F1", '$' mef4 db 0dh,0ah, "You press F4", '$' mef10 db 0dh,0ah, "You press F10", '$' mesf1 db 0dh,0ah, "You press shift+F1", '$' mesf2 db 0dh,0ah, "You press shift+F2", '$' mesf10 db 0dh,0ah, "You press shift+F10", '$' mecf1 db 0dh,0ah, "You press ctrl+F1", '$' mecf2 db 0dh,0ah, "You press ctrl+F2", '$' mecf10 db 0dh,0ah, "You press ctrl+F10", '$' meaf1 db 0dh,0ah, "You press alt+F1", '$' meaf2 db 0dh,0ah, "You press alt+F2", '$' meaf10 db 0dh,0ah, "You press alt+F10", '$' CODES ENDS END MAIN
|
|
Зарегистрирован |
|
|
|
Tanto
Гость
|
|
Re: Ассемблер « Ответ #3 от 21.12.2003 в 00:47:18 » |
|
Понимаешь, на каждую клавишу писать много было б, я написал тока н аизбранные и обьяснил ей это. Так как она не очень шарит, то приняла мои обьяснения. Можно было б с циклом, но вышли траблы. так что пришлось так...
|
|
Зарегистрирован |
|
|
|
|