Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 14.01.2017
Сообщений: 22
1

Вывод названия функциональных клавиш, которые нажаты

23.04.2017, 11:10. Показов 1341. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
я делаю лабку, где нужно выводить название клавиши которую нажали, она еще недодалана, но там есть проблемка которую я не понимаю, когда нажимаю кнопку, которую уже прописал, выводиться она и все строки, что инициализированая после строки, что я вывожу
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
.model tiny
.code
data segment
mesH db'Home',10,13,'$'
mesE db 'End',10,13,'$'
mesEnt db 'Enter',10,13,'$'
mesD db 'Del',10,13,'$'
mesIn db 'Insert',10,13,'$'
mesPU db 'PgUp',10,13,'$'
mesPD db 'PgDn',10,13,'$'
eror db 'enter symbol is not functional!', 10, 13, '$'
kod db ?
data ends
code segment
assume cs:code, ds:data
begin:
mov ax,data
mov ds,ax
mov ax,2h
int 10h
 
enterSymbol:
    mov ah,00
    int 16h
    cmp al,00
    jne erorSymbol
    cmp ah, 49h
    jne cont0
        call mesPgUp
        jmp enterSymbol
cont0:
    cmp ah, 51h
    jne cont1
        call mesPgDn
        jmp enterSymbol
cont1:
    cmp ah, 52h
    jne cont2
        call mesInsert
        jmp enterSymbol
cont2:
    cmp ah, 53h
    jne cont3
        call mesDel
        jmp enterSymbol
cont3:
 
 
 
 
    cmp ah, 47h
        call mesHome
        jmp exit1
 
 
 
 
 
exit1:
mov ax,4c00h
int 21h
 
proc mesHome
    mov ah,9
    lea dx,mesH
    int 21h
mesHome endp
proc mesEnd
    mov ah,9
    lea dx,mesE
    int 21h
mesEnd endp
proc mesEnter
    mov ah, 9
    lea dx, mesEnt
    int 21h
mesEnter endp
proc mesDel
    mov ah, 9
    lea dx, mesD
    int 21h
mesDel endp
proc mesInsert
    mov ah, 9
    lea dx, mesIn
    int 21h
 mesInsert endp
 proc mesPgUp 
    mov ah, 9
    lea dx, mesPU
    int 21h
 mesPgUp endp
 proc mesPgDn
    mov ah, 9
    lea dx, mesPD
    int 21h
 mesPgDn endp
 
 
 
 
 erorSymbol:
    mov ah, 9
    lea dx, eror
    int 21h
    jmp enterSymbol
 
 
 
code ends
end begin
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2017, 11:10
Ответы с готовыми решениями:

Проверка функциональных клавиш
Здравствуйте, к примеру mov AH, 00h int 16h в AL возвращается ASCII код нажатой клавиши....

Переназначение функциональных клавиш
Привет, у меня HP mini 110..., часто нужно работать в терминале, mc, и т.д, а F-клавиши заняты...

Коды функциональных клавиш
что тут изменить, чтобы считывало не клавишу "1", а "ESC" MODEL TINY STACK 100h DATASEG ...

Обработка функциональных клавиш (F2)
Программа должна завершаться при нажатии F2, почему выводится лишний символ q uses crt; var ...

7
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
23.04.2017, 14:07 2
Цитата Сообщение от beginer coder Посмотреть сообщение
Код
proc mesHome
 mov ah,9
 lea dx,mesH
 int 21h
mesHome endp
В каждой процедуре добавь после int 21h инструкцию ret
И вообще много лишнего..
0
0 / 0 / 0
Регистрация: 14.01.2017
Сообщений: 22
23.04.2017, 14:54  [ТС] 3
я уже понял про ret, а что лишнее?
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
23.04.2017, 15:21 4
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
.data
table dw mesH,mesPgUp,.....
mesH db'Home',10,13,'$'
mesE db 'End',10,13,'$'
mesEnt db 'Enter',10,13,'$'
mesD db 'Del',10,13,'$'
mesIn db 'Insert',10,13,'$'
mesPU db 'PgUp',10,13,'$'
mesPD db 'PgDn',10,13,'$'
...
.code
....
cmp ah, 47h
jb erorSymbol
cmp ah,53h
ja erorSymbol
xor bx,bx
sub ah,47h
mov bl,ah
add bx,bx
mov dx,table[bx]
mov ah,9
int 21h
....
1
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
23.04.2017, 15:22 5
лишнее всё повторяющееся..
Оставь только одну процедуру вывода на экран, а адрес строки lea dx передавай параметром в эту процедуру:
[asm]
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
;......
cont0:
    cmp   ah, 51h
    jne   cont1
    lea   dx,mesPgDn
    call  Print
    jmp   enterSymbol
 
;.......
proc Message
    mov ah,9
    int 21h
    ret
Message endp
И вообще почитай, как организуется функция CASE на ассемблере..
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
23.04.2017, 15:26 6
Аналог Switch в masm
0
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
23.04.2017, 15:27 7
..уже можешь не читать.
Mikl___ привёл тебе пример - табличный вызов по указателю.
1
Модератор
Эксперт по электронике
8476 / 4335 / 1642
Регистрация: 01.02.2015
Сообщений: 13,461
Записей в блоге: 8
23.04.2017, 17:27 8
beginer coder, или ваш клон или коллега чуть раньше спрашивал и забыл (счётчик скачиваний равен 0)
Вывод названия нажатой пользователем функциональной клавиши
Там как раз табличный способ.
0
23.04.2017, 17:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2017, 17:27
Помогаю со студенческими работами здесь

Драйвер функциональных клавиш Intel x300
Имеется аппарат intel x300. Не работают функциональные клавиши. Нужен драйвер. Не могу найти. ...

Подскажите ASCII код функциональных клавиш? F1..F12
Подскажите пожалуйста ASKII код функциональных клавиш...очень надо...

Использование функциональных клавиш для завершения программы
Вводится текст. Конец ввода <F6>. Найти количество заглавных букв. program zaglavnye; uses crt;...

Как считывать с клавиатуры клавиши которые были нажаты вне формы
Как считывать с клавиатуры клавиши которые были нажаты вне формы?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru