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

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

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

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


Бывалый
***

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

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


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

:flowers:

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


--------------------
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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


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

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

Репутация: -  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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


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

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

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


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


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


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

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

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


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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


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

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

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


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


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


Гость






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


Прикрепленные файлы
Прикрепленный файл  __IV.PAS ( 1.17 килобайт ) Кол-во скачиваний: 441
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.04.2024 6:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name