• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

как реализовать в паскале прерывания?

  • Автор темы deeeman
  • Дата начала
D

deeeman

Добрый день! Поможите плз:

Описание к задачи:
Необходимо написать программу, реализующую параллельную работу нескольких процессов. Каждый процесс может состоять из одного или нескольких потоков. Любой из потоков, работающих в составе этих процессов, может быть приостановлен и вновь запущен некоторой определенной клавишей (можно использовать буквенные или цифровые клавиши). Нажатия клавиш обрабатывать с помощью прерывания от клавиатуры.

Задача:
Два потока: первый читает информацию из файла (например, стихи или текст программы) в буфер, второй эту информацию из буфера выдаёт на экран. При заполнении окна вывода до конца его содержимое не должно обновляться полностью – вывод новой информации должен осуществляться в последнюю строку, а все остальные строки смещаться вверх. Имя читаемого файла задавать как параметр командной строки. После окончания файла он начинает считываться заново.


потоки организованы, работает. а вот нажатие клавиш происходит через простое считывание key кнопки.
как организовать через прерывание, я так понимаю это вставка на асеме?
 
T

Titan

Ассемблер, дружит с перываниями, регистрами и т.д лучше всего. На нем это реализуется очень хорошо.
Но на паскале тоже можно. Хотя не исключаю, что возможно понядобятся какие-то вставки.

Конкретно с примерами кода на ваш ответ, не буду отвечать, это требует некоторого времени. Но вот погуглив немного, нашел парочку статей, которые должны помочь, покрвйней мере направить в какое-то русло.



модуль: Клавиатура (собственный обработчик прерывания клавиатуры)

надеюсь поможет...
 
D

deeeman

Спасибо за подборку!
пригодился пример кода: KEYDRV.PAS
(взято с

про клавиши вверх вниз влево вправо понятно, а вот как обстоят дела с комбинациями клавиш?
например:
Ctrl + z и Ctrl + x
Shift + z и Shift + z

где взять коды кнопок нажатых одновременно?
можно это сделать через прерывания?

есть код: (типа прерывания на паскале.. но хотелось бы переделать со вставками асема, вероятно быстрее будет исполнятся.. а то медленно реагирует на клавиши...)

пока что у меня это сделано так:

{CTR+Z - увеличиваем квант времени для производителя}
If (ord(S)=26) Then Begin
........

но хотелось бы прерываниями, может будет быстрее реагировать...
 

Вложения

  • KEYDRV.PAS
    6,5 КБ · Просмотры: 279
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!