1. Заголовок или название темы должно быть информативным 2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE] 3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора. 5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM! 6. Проверяйте программы перед тем, как выложить их на форум!!
прерывание по нажатию комбинации клавиш, объясните
1. как написать прерывание, которое по нажатию комбинации двух клавиш (например Ctrl+printScr или Alt+PrintScr) выдавало бы например ткстовое сообщение ?? (в досе)
знакомо ли вам состояние, когда 4 часа пишешь программу, а она не работает ???? ... почему мое долбаное прерывние не работает ?? мне надо по нажатию Shift+PrinScreen вывести звуковой сигнал (или тектовое сообещние).
пользователь запускает программу, после чего комп ждет нажатия шифт+принтскрин. когда нужная комбинация нажата, программа завершается.
резидентой делать не надо.
DATSEG SEGMENT
EndLine EQU '$'
KEEP_CS DW 0 ; segment KEEP_IP DW 0 ; offsetя
line1 DB 'LAB WORK ь5.', 0AH, 0DH, Endline line2 DB 'PRESS Shift+PrintScreen TO RUN INTERRUPT.', 0AH, 0DH, Endline line3 DB 'PROGRAM WILL DO SOUND SIGNAL.', 0AH, 0DH, Endline; line4 DB 'done', 0AH, 0DH, Endline; line5 DB 'end of program', 0AH, 0DH, Endline; flag DW 0
;top_of_st LABEL WORD
DATSEG ENDS ;----------------------------------------------- STKSEG SEGMENT STACK DW 4096 DUP ('?') STKSEG ENDS ;----------------------------------------------- LAB5 SEGMENT PARA PUBLIC ASSUME CS : lab5, DS : DATSEG, ES : NOTHING, SS : STKSEG ORG 100H
start: ; MOV SP, OFFSET top_of_st MOV AX, DATSEG MOV DS, AX JMP Begin ;----------------------------------------------- WriteStr PROC NEAR XOR AX, AX MOV AH, 09H INT 21H RET WriteStr ENDP ;----------------------------------------------- SUB_INT PROC FAR
PUSH AX PUSH DX PUSH DS
MOV AH, 02H MOV DL, 07H INT 21H я ;mov dx,OFFSET line4 ;line5
; push ds ; mov ax, seg line4 ;line5 ; mov ds,ax ; call writeStr ; pop ds
;mov cx,60000 ;@l2: nop ; push cx ; mov cx,50000 ;@l1: nop ; loop @l1 ; pop cx ; loop @l2 ; push ds ; mov ax, seg flag ; mov ds,ax ; mov dx,offset flag mov flag, 0000h ; pop ds