IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> прерывание по нажатию комбинации клавиш, объясните
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14

Репутация: -  0  +


всем привет smile.gif.
у меня 3 вопроса:

1. как написать прерывание, которое по нажатию комбинации двух клавиш (например Ctrl+printScr или Alt+PrintScr) выдавало бы например ткстовое сообщение ?? (в досе)

2. какой код у клавиши PrintScr ???

3. как сдлать енто прерывние резидентным ??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 14

Репутация: -  0  +


знакомо ли вам состояние, когда 4 часа пишешь программу, а она не работает ???? angry.gif ...
почему мое долбаное прерывние не работает ?? мне надо по нажатию 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

POP DS
POP DX
POP AX

MOV AL, 20H
OUT 20H, AL
IRET
SUB_INT ENDP


BEGIN :
MOV flag, 1
MOV DX, OFFSET line1
CALL WriteStr

MOV AH, 35H ; function of getting vector
MOV AL, 05H ; number of vector
INT 21H

MOV KEEP_IP, BX ; remember offset я
MOV KEEP_CS, ES ; remember segment

MOV DX, OFFSET line2
CALL WriteStr

;------------------- SET THE INTERRUPT ---------

PUSH DS
MOV DX, OFFSET SUB_INT
MOV AX, SEG SUB_INT я
MOV DS, AX
MOV AH, 25H
MOV AL, 05H
INT 21H

MOV AL, 20H ; ???????????
OUT 20H, AL ; ???????????
POP DS
;-----------------------------------------------
;жЁЄ«, Ё§ Є®в®а®Ј® ¬®¦­® ўл©вЁ в®«мЄ® ­ ¦ вЁҐ¬ Є« ўЁиЁ ESC
;LOO1:
;MOV AH,06H
;MOV DL,0FFH
;INT 21H
;JZ LOO1
;CMP AL, 27
;JNZ LOO1

@lo2: mov cx,200
mov bx,flag
cmp bx,0
jz @fin
jmp @lo2

@fin: mov dx,OFFSET line3
call writeStr
;------------------- RESTORE ORIGINAL VECTOR ---
CLI
PUSH DS
MOV DX, KEEP_IP
MOV AX, KEEP_CS
MOV DS, AX
MOV AH, 25H
MOV AL, 05H
INT 21H

MOV AL, 20H ; ???????
OUT 20H, AL ; ???????

POP DS
STI
;-----------------------------------------------
;mov dx,OFFSET line4
;call writeStr
;xor ax,ax

MOV AX, 4C00H
INT 21H

MOV AL, 20H ; ??????
OUT 20H, AL ; ??????

lab5 ENDS
END start



Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 21:45
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name