• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы 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
Мы в соцсетях:

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