Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
FleischHell
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 34
#1

Ввод клавиш или комбинаций и вывод соответствующих сообщений

21.05.2015, 20:33. Просмотров 869. Ответов 13
Метки нет (Все метки)

Преподаватель уволился, а лабу нужно сделать. Нам прочитали всего 4 лекции, а новый, заменяющий, преподаватель в ассемблере только основы знает, потому будет смотреть только на результат и помогать не будет. Помогите, пожалуйста, понять где ошибка. Программа "собирается" но в итоге выводит сообщение с кучей символов и пробелов и на клавиатуру не реагирует. Само задание звучит так: Написать программу, которая проверяет нажатие клавиш (комбинаций клавиш) в соответствии с вариантом задания и выводит соответствующие сообщения. В моем случае F8 и CtrlF8
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
.MODEL Tiny
.CODE
ORG 100h
 
Start:
 
        mov ah,9
        lea dx,Question
        int 21h            ; mess output
RepeatEnter:
                xor     ah,0       ; AH = 0
        int 16h            ; wait pressed
                ;or     al,20h         
 
                cmp     al,66h
        je  F8Pressed     ; pressed 'F8'
 
                cmp     al,101
        jne RepeatEnter    ; pressed not 'CtrlF8' (not 'F8')
 
        lea dx,CtrlF8Message  ; pressed 'CtrlF8'
        jmp ShowMessage
F8Pressed:
        lea dx,F8Message
ShowMessage:
        mov ah,9
        int 21h            ; message output
 
        int 20h            ; exit
 
Question    db  'Choose your side :) (F8/CtrlF8)?$'
F8Message       db      13,10,'PRESSED "F8"$'
CtrlF8Message   db      13,10,'PRESSED "CtrlF8"$'
 
END     Start

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2015, 20:33
Ответы с готовыми решениями:

Вывод сообщений
Задание: напишите программу выводящую сообщение Доброе утро! если время до...

Вывод сообщения после комбинации клавиш
Здравствуйте, срочно нужна помощь! требуется написать обработчик прерываний от...

Ввод и вывод сообщений
1. Организуйте ввод с клавиатуры двух чисел. Окна ввода должны иметь различные...

Посчитать количество комбинаций с исключением соответствующих условию
ребятаа,выручайте ,сколько не смотрел разборов-не получается написать,ни на...

Эмуляция нажатий клавиш или автоматический ввод информации
Добрый день. Мне необходимо чтобы в определенную форму ввелся пароль. Форма...

13
Constantin Cat
2166 / 978 / 360
Регистрация: 28.02.2015
Сообщений: 2,217
Завершенные тесты: 1
21.05.2015, 21:25 #2
11 xor ah,0
Должно быть
xor ah,ah или mov ah,0 или mov ah,10h
1
FleischHell
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 34
21.05.2015, 21:31  [ТС] #3
та же беда, попробовала все варианты
0
Constantin Cat
2166 / 978 / 360
Регистрация: 28.02.2015
Сообщений: 2,217
Завершенные тесты: 1
21.05.2015, 22:00 #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
25
26
27
28
29
30
31
.MODEL Tiny
.CODE
ORG 100h
 
Start:
 
        mov ah,9
        lea dx,Question
        int 21h            ; mess output
RepeatEnter:
        xor     ah,ah       ; AH = 0
        int 16h            ; wait pressed
    cmp     ah,42h
        je  F8Pressed     ; pressed 'F8'
        cmp     ah,101
        jne RepeatEnter    ; pressed not 'CtrlF8' (not 'F8')
        lea dx,CtrlF8Message  ; pressed 'CtrlF8'
        jmp ShowMessage
F8Pressed:
        lea dx,F8Message
ShowMessage:
        mov ah,9
        int 21h            ; message output
 
        int 20h            ; exit
 
Question    db  'Choose your side :) (F8/CtrlF8)?$'
F8Message       db      13,10,'PRESSED "F8"$'
CtrlF8Message   db      13,10,'PRESSED "CtrlF8"$'
 
END     Start
вместо 101 в строке cmp ah,101 поставите нужный Вам код.
1
FleischHell
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 34
21.05.2015, 23:36  [ТС] #5
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
.MODEL Tiny
.CODE
ORG 100h
 
Start:
 
        mov ah,9
        lea dx,Question
        int 21h            ; mess output
RepeatEnter:
        xor     ah,ah       ; AH = 0
        int 16h            ; wait pressed
    cmp     ah,42h
        je  F8Pressed     ; pressed 'F8'
        cmp     ah,65h
        jne RepeatEnter    ; pressed not 'CtrlF8' (not 'F8')
        lea dx,CtrlF8Message  ; pressed 'CtrlF8'
        jmp ShowMessage
F8Pressed:
        lea dx,F8Message
ShowMessage:
        mov ah,9
        int 21h            ; message output
 
        int 20h            ; exit
 
Question    db  'Choose your side :) (F8/CtrlF8)?$'
F8Message       db      13,10,'PRESSED "F8"$'
CtrlF8Message   db      13,10,'PRESSED "CtrlF8"$'
 
END     Start
абракадабра перед вопросом не исчезла, и теперь при нажатии на f8 DosBox зависает
0
Ethereal
3408 / 1547 / 199
Регистрация: 17.02.2013
Сообщений: 2,410
21.05.2015, 23:39 #6
Ты написал COM-файл, а компилируешь наверно как EXE ?
1
FleischHell
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 34
21.05.2015, 23:59  [ТС] #7
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
data segment
    Question    db  'Choose your side :) (F8/CtrlF8)?$'
    F8Message       db      'PRESSED "F8"$'
    CtrlF8Message   db      'PRESSED "CtrlF8"$'
data ends
code segment
    assume cs:code, ds:data
Start:
 
        mov ah,9
        lea dx,Question
        int 21h            ; mess output
RepeatEnter:
        xor     ah,ah       ; AH = 0
        int 16h            ; wait pressed
    cmp     ah,42h
        je  F8Pressed     ; pressed 'F8'
        cmp     ah,65h
        jne RepeatEnter    ; pressed not 'CtrlF8' (not 'F8')
        lea dx,CtrlF8Message  ; pressed 'CtrlF8'
        jmp ShowMessage
F8Pressed:
        lea dx,F8Message
ShowMessage:
        mov ah,9
        int 21h            ; message output
 
        int 20h            ; exit
 
        mov ah, 4ch
                int 21h
 
 code ends
END     Start
если в таком виде, то по нажатию на f8 еще раз появляется вопрос с абракадаброй и больше на клавиши досбокс не реагирует
0
Ethereal
3408 / 1547 / 199
Регистрация: 17.02.2013
Сообщений: 2,410
22.05.2015, 00:22 #8
Лучший ответ Сообщение было отмечено FleischHell как решение

Решение

Ну если уж EXE, то тогда так, наверное
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
stek segment stack 'stack'
    db  200h dup (?)
stek ends
 
data segment
    Question    db  'Choose your side :) (F8/CtrlF8)?$'
    F8Message       db      'PRESSED "F8"$'
    CtrlF8Message   db      'PRESSED "CtrlF8"$'
data ends
code segment
    assume cs:code, ds:data
Start:
    mov ax,data
    mov ds,ax
 
        mov ah,9
        lea dx,Question
        int 21h            ; mess output
RepeatEnter:
        xor     ah,ah       ; AH = 0
        int 16h            ; wait pressed
    cmp     ah,42h
        je  F8Pressed     ; pressed 'F8'
        cmp     ah,65h
        jne RepeatEnter    ; pressed not 'CtrlF8' (not 'F8')
        lea dx,CtrlF8Message  ; pressed 'CtrlF8'
        jmp ShowMessage
F8Pressed:
        lea dx,F8Message
ShowMessage:
        mov ah,9
        int 21h            ; message output
 
;        int 20h            ; exit
 
        mov ah, 4ch
                int 21h
 
 code ends
END     Start
1
Constantin Cat
2166 / 978 / 360
Регистрация: 28.02.2015
Сообщений: 2,217
Завершенные тесты: 1
22.05.2015, 00:51 #9
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
.MODEL Tiny
.CODE
ORG 100h
 
Start:
 
        mov ah,9
        lea dx,Question
        int 21h            ; mess output
RepeatEnter:
        mov     ah,10h       ; AH = 0
        int 16h            ; wait pressed
    cmp     ah,42h
        je  F8Pressed     ; pressed 'F8'
        cmp     ah,65h
        jne RepeatEnter    ; pressed not 'CtrlF8' (not 'F8')
        lea dx,CtrlF8Message  ; pressed 'CtrlF8'
        jmp ShowMessage
F8Pressed:
        lea dx,F8Message
ShowMessage:
        mov ah,9
        int 21h            ; message output
 
        int 20h            ; exit
 
Question    db  'Choose your side :) (F8/CtrlF8)?$'
F8Message       db      13,10,'PRESSED "F8"$'
CtrlF8Message   db      13,10,'PRESSED "CtrlF8"$'
 
END     Start
я компилировал с помощью ВАТ-файла:
D:\cat1\_Lang\Tasm\TASM.200\tasm %1 /l
D:\cat1\_Lang\Tasm\TASM.200\tlink %1 /t
/t - создать СОМ-файл

Цитата Сообщение от FleischHell Посмотреть сообщение
если в таком виде, то по нажатию на f8 еще раз появляется вопрос с абракадаброй и больше на клавиши досбокс не реагирует
При работе с сегментами нужно настраивать сегментные регистры DS и ES, т.к. при запуске они указывают совсем на другую область.
1
FleischHell
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 34
22.05.2015, 18:38  [ТС] #10
в случает под EXE, f8 работает, а вот с ctrl+f8 я все никак не разберусь
0
Ethereal
3408 / 1547 / 199
Регистрация: 17.02.2013
Сообщений: 2,410
22.05.2015, 18:52 #11
Чего там разбираться ? Нажимаешь в DosBox Ctrl-F8 а он в своем DosBox Status Window пишет Frame Skip at число. Короче, DosBox использует Ctrl-F8 как свою горячую клавишу и программе ее не отдает. DosBox - отстой.
1
FleischHell
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 34
22.05.2015, 19:20  [ТС] #12
Огромнейшее всем спасибо за помощь, EXE версия работает как надо, увы COM версию я посмотреть не смогла, так как досбокс не хочет ее нормально воспринимать(я ее собирала как ком файл, но там проблема со шрифтом)
0
Constantin Cat
2166 / 978 / 360
Регистрация: 28.02.2015
Сообщений: 2,217
Завершенные тесты: 1
22.05.2015, 22:40 #13
FleischHell
Какая у Вас ОСь?
0
FleischHell
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 34
24.05.2015, 21:25  [ТС] #14
Win 8.1 для одного языка
0
24.05.2015, 21:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2015, 21:25

комбинаций клавиш
как можно поменять комбинацию клавиш в MS Worde, например как Shift + Ins на...

Сбой комбинаций клавиш
Доброго времени суток! Столкнулся с такой проблемой. Принесли мне ноутбук...

Работа комбинаций клавиш
Ребята, что делать? проблема с комбинациями fn+f2 и fn+f3, регулирующими...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru