Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы / 9091_Боброва_лаб_2.docx
Скачиваний:
11
Добавлен:
07.08.2024
Размер:
21.48 Кб
Скачать
  1. Рассчитать адрес вектора прерывания системного таймера следуя формуле :

АДРЕС = номер прерывания ( см. рис. 1 ) * 4.

Записать в отчет адрес вектора и его содержимое.

Адрес = 8*4 = 20h

Содержимое вектора прерываний:

75 18 69 07

Запомнить текущее содержимое регистра CS, записать в CS значение из вектора. В окне дизассемблера найти точку входа в обработчик прерываний таймера и записать в отчет три первых команды обработчика прерываний системного таймера. Восстановить прежнее содержимое регистра CS.

CS = 0769

Команда a1875

Первые три команды обработчика прерываний системного таймера.

PUSHF

CLI

CALL Far CS:[23C0]

  1. Рассчитать адрес вектора системного прерывания INT 1C. Записать в отчет адрес вектора и его содержимое. Запомнить текущее содержимое регистра CS; Записать в CS значения из вектора. В окне дизассемблера найти точку входа в обработчик прерываний INT 1C и записать в отчет три первых команды обработчика. Восстановить прежнее значение регистра CS.

Адрес = 1C *4 = 70h

Содержимое вектора прерываний:

53 FF 00 F0

CS = F000

Команда aFF53

Первые три команды обработчика прерываний системного таймера.

IRET

JMP ED04

JMP DI

1C - Программное прерывание, вызывается 18,2 раза в секунду обработчиком аппаратного прерывания таймера

INT9 (IRQ1) - прерывание от клавиатуры. Генерируется, когда пользователь нажимает и отжимает клавиши. Используется для чтения данных из клавиатуры.

Адрес = 9*4 = 24h

Содержимое вектора прерываний:

6F 4B EE 13

CS=13EE

Смещение обработчика клавиатуры: 4B6Fh

  1. Начиная с адреса 100 набрать текст пр-мы обработки прерываний таймера:

PUSH AX; Помещение в стек содержимого AX

ADD CS:[30] , 1 ; Увеличение на 1 содержимого CS:[30]

MOV AL , 20; Помещение в регистр AL управляющей команды 20h

OUT [20] , AL;

;Отправка в порт 20 управляющей команды 20h для фиксации обработки прерывания. В противном случае обработчик программных прерываний таймера будет вызываться постоянно, что приведет к зависанию программы (В ISR остается 1)

20h = 00100000

EOI = 1, сброс бита ISR с максимальным приоритетом

POP AX; Извлечение AX из стека

IRET

Начиная с адреса 120 набрать текст :

NOP

JMP 120

В отчете привести функциональный комментарий к каждой из команд.

  1. Замаскировать прерывание системного таймера.

  2. Вводим o21,B8

  3. Переходим на es0070 и записываем начало адреса главного кода (0001 (т.е. 0100)) и адрес cs2405 (0524).

  4. Заменить вектор прерываний таймера на новый. Показать преподавателю.

  5. Сбросить маску прерываний таймера.

  6. В пошаговом режиме выполнять программу, начиная с адреса 120, контролировать содержимое ячейки CS: 0030.

При пошаговом выполнении программы наблюдается увеличение ячейки CS:0030.

  1. Восстановить прежний обработчик прерываний таймера.

  2. Разрешить прерывания таймеру.

Соседние файлы в папке Лабораторные работы