Skip to content

[ЭКЗАМЕН 30] Срабатывание прерывания. Обработчик прерывания в реальном режиме. Возврат из обработчика прерывания.

Justarone edited this page Jun 9, 2020 · 6 revisions

Срабатывание прерывания

  • Сохранение в текущий стек регистра флагов и адреса возврата (адреса следующей команды)
  • Передача управления по адресу обработчика из таблицы векторов
  • Настройка стека (возможно, обработчику прерываний нужен свой стек, потому что стек остается связан с той программой, которая работала до срабатывания прерывания; если обработчик сложный, то иногда такие обработчики перенастраивают стек)
  • Повторная входимость (реентерабельность), необходимость запрета прерываний (Кузнецов: "таймер тикает, срабатывают прерывания. В какой-то момент прерывание тика таймера не успевает отработать до след тика, вызывается еще раз тоже прерывание и нужно обеспечить корректную работу в такой ситуации"; запрет прерывания можно делать только на короткий срок, иначе можно потерять данные (переполнение буфера клавиатуры, например))

Обработчик прерывания в реальном режиме

Располагается в самом начале памяти, начиная с адреса 0. Доступно 256 прерываний. Каждый вектор занимает 4 байта - полный адрес. Размер всей таблицы - 1 Кб.

Возврат из обработчика прерываний

IRET - используется для выхода из обработчика прерывания. Восстанавливает FLAGS, CS:IP. При необходимости выставить значение флага обработчик меняет его значение непосредственно в стеке.

Следующий вопрос: Процессор 80386. Разрядность, регистры.

Предыдущий вопрос: Прерывания. Назначение, виды прерываний. Таблица векторов прерываний.

Экзамен:

  1. Архитектура фон Неймана. Принципы фон Неймана

  2. Структурная схема ЭВМ. Виды памяти. Системная шина.

  3. Процессор 8086. Разрядность. Регистры.

  4. Процессор 8086. Регистр флагов.

  5. Процессор 8086. Шина адреса. Сегментная модель памяти.

  6. Выполнение программы. Машинный код. Исполняемые файлы. Язык ассемблера.

  7. Классификация команд процессора x86.

  8. Команда пересылки данных.

  9. Команды целочисленной арифметики.

  10. Команды побитовой арифметики.

  11. Команды передачи управления.

  12. Структура программы на языке ассемблера. Модули. Сегменты.

  13. Директивы выделения памяти. Метки.

  14. Директива SEGMENT.

  15. Директива ASSUME.

  16. Директива END. Точка входа.

  17. Виды переходов. Условные, безусловные переходы. Короткий, ближний, дальний переход.

  18. Способы адресации.

  19. Команда сравнения.

  20. Команды условных переходов.

  21. Команда XLAT/XLATB.

  22. Команда LEA.

  23. Команды десятичной арифметики.

  24. Команды сдвига.

  25. Команда организации цикла.

  26. Строковые операции. Префиксы повторения.

  27. Стек. Регистры, связанные со стеком. Команды записи/извлечения из стека.

  28. Стек. Использование при вызове подпрограмм. Команды вызоваподпрограммы и возврата.

  29. Прерывания. Назначение, виды прерываний. Таблица векторов прерываний.

  30. Срабатывание прерывания. Обработчик прерывания в реальном режиме. Возврат из обработчика прерывания.

  31. Процессор 80386. Разрядность, регистры.

  32. Защищённый режим работы процессора. Многозадачность.

  33. Модели памяти в защищённом режиме. Регистры управления памятью. Страничное преобразование.

  34. Процессоры x86-64. Регистры. Режимы работы.

  35. Математический сопроцессор. Типы данных. Представление вещественных чисел.

  36. Математический сопроцессор. Регистры.

  37. Математический сопроцессор. Особые числа.

  38. Математический сопроцессор. Классификация команд.

  39. Расширение MMX. Назначение. Типы данных.

  40. Расширение MMX. Регистры. Классификация команд.

  41. Расширение SSE. Назначение. Типы данных. Регистры.

  42. Макроопределения. Назначение.

  43. Макроопределения. Директивы присваивания и отождествления.

  44. Макроопределения. Макрооперации.

  45. Макроопределения. Блоки повторения.

  46. Макроопределения. Директивы условного ассемблирования.

Clone this wiki locally