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

> Прочтите прежде чем задавать вопрос!

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

 
 Ответить  Открыть новую тему 
> прерывания
Catty
сообщение 2.04.2005 15:36
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 239
Пол: Женский
Реальное имя: Юлия

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


Осуществить коррекцию прерывания Int 9 (от клавиатуры)
так, чтобы:
а) выполнялись все действия системного обработчика данного
прерывания;
б) при нажатии одной из клавиш-переключателей вывести на эк-
ран название этой клавиши.
клавиша-переключатель:
Печать копии экрана. Генерируется при нажатии на кла-
виатуре клавиши PrtScr. Обычно используется для печати
образа экрана. Для процессора 80286 генерируется при
выполнении машинной команды BOUND, если проверяемое
значение вышло за пределы заданного диапазона.

:flowers:

Сообщение отредактировано: Catty - 2.04.2005 15:38


--------------------
For every evil under the sun
There is a remedy or there is none
If there is one - try to find it
If there is none - never mind it!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 2.04.2005 17:38
Сообщение #2


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


Catty , вот тебе для коррекции int9h, (программа Volvo).
Она работает но PrtScr ей не поймаешь, потому что в порт не пишется эта клавиша..


Код
uses dos, crt;
Var
 wasPrtScr: boolean; {признак нажатия принтс скрина}
 do_exit: boolean;{признак нажатия esc}
 Old_09: Pointer; {указатель на старую процедуру обработки}
 KbdIntVec: procedure;{процедура  - старый обработчик прерывания}

{$f+}
Procedure New9; Interrupt; {новая процедура обработки прерывания}
 Var
   Scan: Byte;{скэн код клавиши}
 Begin
   Scan := Port[ $60 ]; {читаем скэн код из порта клавы}

   { вот тут должна быть проверка на скэн-код PrtScr }
   wasPrtScr := (Scan = $14); {это не работает}

   do_exit := (scan = $01); { Это - Escape }
  { If wasPrtScr Then
   Else} Begin
     Inline( $9C );  {сохраняем регистры}
     KbdIntVec; {вызываем стандартный обработчки}
   End;
 End;
{$f-}

var
k:byte;

BEGIN
 GetIntVec($9, @KbdIntVec); {получаем вектор прерывания}
 GetIntVec($9, Old_09); {и указатель}
 SetIntVec($9, Addr(New9)); {ставим свой обработчик}

 repeat
   if wasPrtScr then
     begin
       writeln('Print Screen pressed');
       wasPrtScr := false;
     end;
   if keypressed then {нажата клавиша}
     begin
       k:=ord(readkey); {читаем клавишу}
       if k=0 then begin k:=ord(readkey); writeln('ext: ',k) end else  writeln(chr(k));
     end;
 until do_exit;

 SetIntVec($9, Old_09); {ставим старый вектор прерывания, убирая свой}
END.


Я тут посмотрел, и нашел как отличить CTRL+ALT+DEL..
вот так:
Код
procedure MyInt9; far; assembler;
asm
  push  ax
  in    al,60h
  cmp   al,53h {Є« ўЁи  Del}
  jne   @Exit
  push  ds
  xor   ax,ax
  mov   ds,ax
  mov   al,ds:[417h]
  and   al,0Ch
  cmp   al,0Ch {Ctrl+Alt ?}
  jne   @No
  in    al,61h
  mov   ah,al
  or    al,80h
  out   61h,al
  xchg  ah,al
  out   61h,al
  mov   al,20h
  out   20h,al
  pop   ds
  pop   ax
  iret
@No:
  pop   ds
@Exit:
  pop   ax
  push  seg JmpFar
  push  Offset JmpFar
end;

А клоню я к тому, что тебе к нашим ассемблерщикамнадо smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Catty
сообщение 2.04.2005 18:36
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 239
Пол: Женский
Реальное имя: Юлия

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


Ой спасибо Олежик! А можно какие то комментарии понаписывать, а то мне ёё всё таки объяснять надо преподу! :flowers:


--------------------
For every evil under the sun
There is a remedy or there is none
If there is one - try to find it
If there is none - never mind it!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 2.04.2005 18:39
Сообщение #4


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


Да не мне спасибо, а volvo! smile.gif
коменты напишу щас smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 2.04.2005 18:48
Сообщение #5


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


сделал.... читай тот пост


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Catty
сообщение 2.04.2005 19:47
Сообщение #6


Бывалый
***

Группа: Пользователи
Сообщений: 239
Пол: Женский
Реальное имя: Юлия

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


Спасибо ребята! Только вот вопрос, а почему прога ничего не выдает????
Ты говорил тут что-то не срабатывает?


--------------------
For every evil under the sun
There is a remedy or there is none
If there is one - try to find it
If there is none - never mind it!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 2.04.2005 20:19
Сообщение #7


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


как это не срабатывает? на нажатия принт скринатолько не срабатывает. Все остальное по заданию.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.04.2005 20:50
Сообщение #8


Гость






Catty,
попробуй вот эту программку (понажимай Ctrl, Alt, левый и правый Shift ...) Для выхода - Escape...


Прикрепленные файлы
Прикрепленный файл  __IV.PAS ( 1.17 килобайт ) Кол-во скачиваний: 330
 К началу страницы 
+ Ответить 
Catty
сообщение 2.04.2005 20:57
Сообщение #9


Бывалый
***

Группа: Пользователи
Сообщений: 239
Пол: Женский
Реальное имя: Юлия

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


спасибо Volvo :flowers:


--------------------
For every evil under the sun
There is a remedy or there is none
If there is one - try to find it
If there is none - never mind it!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 20.07.2025 6:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"