A.I.M. Jagged Alliance2

Добро пожаловать, Гость. Пожалуйста, выберите:
Вход || Регистрация.
24.04.2024 в 14:20:34

Главная Главная Помощь Помощь Поиск Поиск Участники Участники Вход Вход Регистрация Регистрация
A.I.M. « Ассемблер »
   A.I.M.
   Генерал
   Ъ и Ь
(Модераторы: Zed, cha, Снайпер)
   Ассемблер
« Предыдущая Тема | Следующая Тема »
  Тема:  Ассемблер             Страниц: 1 Прочитано 910 раз
Tanto
Гость

Ё-мэйл

Ассемблер
« от 08.12.2003 в 01:58:15 »

====НАРОД====
Есть здесь кто шарит в "ассемблере"?
Передо мной стоит задача
При каждом нажатии клавиши должно выодится ее значение на экран. Нажали "А" и на экране появляется  "А". Нажатия шифтов и альтов тоже обрабатываются. Но еще остаются функциональные клавиши. Как обрабатывать их скан-код и выводить сообщение о них на экран, ровно  как и комбинации с шифтом и альтом? Также и нажатия  капс лоск и нам лок? Ведь это не алфавитно-цифровые клавиши, а управляющие. И насколько я понимаю, они имеют  обозначаются в 2-байтном дополнительном АСКИ-коде, а сканировать и выводить на экран я могу только однобайтные скан-коды. Доп АСКИ-код   впервом байте всегда имеет нулевое значение.
В аттаче два варианта, которые обрабатывают нажатия клавиши, но не делают этого до конца.
Буду пренамного благодарен,  если кто-нибудь решит эту задачу к пятнице 13 дек.

Вот прицепился!       work-1.rar
Зарегистрирован

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 »

Понимаешь, на каждую клавишу писать много было б, я написал тока н аизбранные и обьяснил ей это. Так как она не очень шарит, то приняла мои обьяснения.
Можно было б с циклом, но вышли траблы. так что пришлось так...
Зарегистрирован

Страниц: 1  Послать Тему Послать Тему Печатать Печатать

« Предыдущая Тема | Следующая Тема »

Статистика. Размер данных: 19835 GZip: off
A.I.M. » Powered by YaBB Modification 4 (v.4.0.0-pre)!
YaBB © 2000-2003. All Rights Reserved.