Разделы презентаций


GNU Эмулятор, прерывания

Содержание

Обработка прерыванийПрерывания доступны, если включен флаг (бит) регистра состояния SR I(nterrupt) !!!Команда CLI ; I(nterrupt) = 0Команда STI : I(nterrupt) = 1

Слайды и текст этой презентации

Слайд 1GNU Эмулятор, прерывания
Аппаратный таймер.
Клавиатура.
Нити исполнения.
Программные прерывания

GNU Эмулятор, прерыванияАппаратный таймер.Клавиатура.Нити исполнения.Программные прерывания

Слайд 2Обработка прерываний
Прерывания доступны, если включен флаг (бит) регистра состояния SR

I(nterrupt) !!!
Команда CLI ; I(nterrupt) = 0
Команда STI : I(nterrupt)

= 1
Обработка прерыванийПрерывания доступны, если включен флаг (бит) регистра состояния SR I(nterrupt) !!!Команда CLI ; I(nterrupt) = 0Команда

Слайд 3Прерывания процессора
Вектор прерывания состоит из номера N и адреса OFF

подпрограммы обработки прерывания.
Номер вектора прерывания представляет собой ячейку оперативной

памяти, где записан адрес соответствующей подпрограммы обработки прерывания.

Следует иметь в виду, что в эмуляторе есть зарезервированные вектора прерываний для виртуальных устройств.
Это номера 02,03,04.
При реализации программных прерываний номера 03 и 04 не используют, а в прерывание 02 размещают адрес обработчика аппаратного таймера.

Прерывания процессораВектор прерывания состоит из номера N и адреса OFF подпрограммы обработки прерывания. Номер вектора прерывания представляет

Слайд 4Алгоритм обработки
При выполнении команды INT N (появление сигнала прерывания) микропроцессор

выполняет следующие действия:
Выполняется обращение к номеру ячейки оперативной памяти N.
В

регистр IP загружается адрес OFF процедуры обработчика прерывания
В стек заносится адрес ADDR команды, которая идет следом за командой INT.
Начинается выполнение команд процедуры обработчика прерывания.
После достижения команды IRET из стека в IP загружается адрес команды программы ADDR и работа программы продолжается
Алгоритм обработкиПри выполнении команды INT N (появление сигнала прерывания) микропроцессор выполняет следующие действия:Выполняется обращение к номеру ячейки

Слайд 5Настройка аппаратного таймера
Аппаратный таймер выполняет обращение к вектору прерывания 02

с периодом, который задается с помощью вкладки «Configuration»
Для увеличения

времени периода срабатывания используется кнопка «Increase».
Для уменьшения кнопка «Reduce».
Настройка аппаратного таймераАппаратный таймер выполняет обращение к вектору прерывания 02 с периодом, который задается с помощью вкладки

Слайд 6Вывод сообщения по тайм ауту
Упражнение №1, программа flash.asm. Пример использования

аппаратного таймера. Требуется разработать программу для вывода на устройство VDU

последовательности байтов – символов строки «ABC». Сообщение выводится постоянно в циклическом режиме вывод – стирание-вывод и т.д.

Для контроля за процессом вывода используем регистр BL.
Адрес обработчика прерывания примем равным 30.
Если в регистре код 01 – строка не выведена, 00 – строка выведена.
Следует иметь в виду, что время срабатывания системного таймера должно быть таким, что программа «успела» произвести к вектору прерывания. Иначе все время будет выполняться команд замкнутого цикла NOP !!!

Вывод сообщения по тайм аутуУпражнение №1, программа flash.asm. Пример использования аппаратного таймера. Требуется разработать программу для вывода

Слайд 7Программа
Перейти Запуск
Байт 30 |Вектор прерывания
Запуск:
BL

вывода
Выполнять: |Замкнутый программный цикл
установить бит I(nterrupt) |Разрешить прерывания
NOP
Переход

Выполнять

Вектор прерывания таймера

ПрограммаПерейти Запуск Байт 30 |Вектор прерывания Запуск:BL

Слайд 8Программа
ORG 30 |Обработчик прерывания
Сбросить флаг I(nterrupt) |Запретить прерывания

SR  |Сохранить флаги
AL  |Сохранить AL
В BL

бит 0 установлен ? |Строка не выведена?
Если Z=1 то Стереть |Выведена – стереть
|Вывод строки
AL < = 41
Адрес C0 <= AL
AL <= 42
Адрес C1 <= AL
AL <= 43
Адрес C2 <= AL
BL <= 0 |Cтрока выведена
Перейти Выход |Выйти
ПрограммаORG 30 |Обработчик прерывания Сбросить флаг I(nterrupt) |Запретить прерывания  SR  |Сохранить флаги AL  |Сохранить

Слайд 9Программа
|Стереть строку
Стереть:
AL

[C1],AL
Адрес [C2],AL
BL


SR 
Выйти из обработчика прерывания
Конец
Программа |Стереть строку Стереть: AL

Слайд 10Настройка тайм аута
Перед запуском программы установите режим срабатывания аппаратного таймера

равным одной секунде
Откомпилируйте программу и запустите ее в режиме автоматического

исполнения.
Используя кнопку «Faster» подберите оптимальную скорость - частоту процессора.
Настройка тайм аутаПеред запуском программы установите режим срабатывания аппаратного таймера равным одной секундеОткомпилируйте программу и запустите ее

Слайд 11Алфавитноцифровая клавиатура
Клавиатура представляет собой устройство для работы, с которым используется

прерывание 03 и порт 07.
Клавиатура появляется на экране после

обращения к ее порту.
Алфавитноцифровая клавиатураКлавиатура представляет собой устройство для работы, с которым используется прерывание 03 и порт 07. Клавиатура появляется

Слайд 12Ввод цифр и символов
Ввод символа кода выполняется путем выбора мышью

соответствующей клавиши.
При движении курсора мыши по клавише выбирается символ

в верхнем или нижнем регистре, либо выбирается комбинация клавиш.

Выбранный символ отображается рядом с клавишей SPACE (пробел) справа !!!

Ввод цифр и символовВвод символа кода выполняется путем выбора мышью соответствующей клавиши. При движении курсора мыши по

Слайд 13Ввод символов и цифр
Ввод символа кода выполняется путем выбора мышью

соответствующей клавиши.
При движении курсора мыши по клавише выбирается символ

в верхнем или нижнем регистре, либо выбирается комбинация клавиш.
Код, который выбран с помощью клавиатуры, помещается в регистр AL.
Ввод не буферизуется!
Ввод символов и цифрВвод символа кода выполняется путем выбора мышью соответствующей клавиши. При движении курсора мыши по

Слайд 14Программа ввода символов
Упражнение № 2. Программа keybrd.asm. Пример программы опроса

клавиатуры.
Коды нажатых клавиш помещаются в видеобуфер – выводятся на

VDU.
Если выбрана клавиша Enter – код 0D программа завершает работу.

В программе обязательно нужно создать пустой обработчик прерывания таймера !!!!
Иначе работа программы будет не предсказуема !!!

Программа ввода символовУпражнение № 2. Программа keybrd.asm. Пример программы опроса клавиатуры. Коды нажатых клавиш помещаются в видеобуфер

Слайд 15Программа
Переход Начать
Байт 20 |Обработчик таймера
Байт 30 |Обработчик клавиатуры
Начать:
BL

бит I(nterrupt) |Разрешить прерывания
Вывод => порт 07 ;Вывести клавиатуру
Выполнять:
В CL код 01 ? |Enter ?
Если Z = 0 то Выполнять |Нет !
HALT
ORG 20 |Обработчик таймера
NOP
Выход из прерывания

Пустой обработчик таймера

ПрограммаПереход Начать Байт 20 |Обработчик таймера Байт 30 |Обработчик клавиатурыНачать:BL

Слайд 16Программа
ORG 30 |Обработчик клавиатуры
Сбросить бит I(nterrupt)
SR 
AL


Порт 07 => AL |Получить код
В AL код

0D |Enter ?
Если Z=1 то Выход |Да – выход
|Нет, принять код клавиши
Адрес BL <= AL
BL= BL +1 |Новый адрес в видео буфере
Перейти Финиш |Конец работы
Выход:
CL <= 01 |Флаг Enter
Финиш:
AL 
SR 
Установить бит I(nterrupt)
Выход их обработчика прерывания
Конец
ПрограммаORG 30 |Обработчик клавиатуры Сбросить бит I(nterrupt) SR  AL  Порт 07 => AL |Получить код

Слайд 17Цифровая клавиатура
Для работы с устройством используется прерывание 04 и порт

08.
Как и в случае с клавиатурой ввод не буферизуется.
Упражнение

№3. Напишите программу numkbrd.asm для формирования числа с помощью цифровой клавиатуры.
Цифровая клавиатураДля работы с устройством используется прерывание 04 и порт 08. Как и в случае с клавиатурой

Слайд 18Ввод цифр
Для формирования числа используется следующий алгоритм:
Записывается код символа введенной

цифры в регистр AL.
Код цифры преобразуется в двоичный код по

формуле AL=AL-30.
здесь 30 шестнадцатеричный код символа 0.
Код в регистре BL умножается на 10 (0A).
Новое число получается по формуле BL=BL+AL.

Если на клавиатуре нажата клавиша Enter, то в программу поступает код 0D, это приводит к выходу из обработчика прерывания, в регистр CL заносится код 01, при появлении этого кода программа завершает свою работу.
В процессе формировании числа выполняется контроль переполнения.

Ввод цифрДля формирования числа используется следующий алгоритм:Записывается код символа введенной цифры в регистр AL.Код цифры преобразуется в

Слайд 19Программа
Перейти Начало
Байт 30 |Обработчик таймера
Байт 00 |Обработчик клавиатуры

Байт 40 |Обработчик цифровой клавиатуры
ORG 30 |Прерывание от таймера
SR

NOP
SR
Выход из прерывания
ORG 40 |Прерывание цифровой клавиатуры
Сбросить бит I(nterrupt)
SR
AL
Порт 08 => AL |Получить код клавиши
В AL код 0D |Enter ?
Если Z=1 то Финиш |Да,конец работы
AL=AL - 30 |Получить код
BL= BL * 0A |Новый разряд
Если бит O = 1 то Ошибка |Контроль переполнения
BL=BL+AL |Прибавить цифру
Перейти Выход |Конец работы
ПрограммаПерейти Начало Байт 30 |Обработчик таймера Байт 00 |Обработчик клавиатуры Байт 40 |Обработчик цифровой клавиатурыORG 30 |Прерывание

Слайд 20Программа
Финиш:
CL

|Переполнение
BL


Выход из прерывания
ПрограммаФиниш: CL

Слайд 21Программа
Начало:
BL


Запись > Порт 08 |Вывести клавиатуру
Выполнять: |Опрашивать клавиатуру
Установить бит

I(nterrupt)
NOP
В CL бит 0 установлен ? |Ввод закончен ?
Если Z = 0 то Стоп |Да выйти
Перейти Выполнять |Нет
Стоп:
Конец
ПрограммаНачало:BL

Слайд 22Программный тест
Последовательное нажатие клавиш 1,2,5
Затем En(ter)
Код 125 сформирован в регистре

BL, программа завершила свою работу

Программный тестПоследовательное нажатие клавиш 1,2,5Затем En(ter)Код 125 сформирован в регистре BL, программа завершила свою работу

Слайд 23Нити исполнения
Многопоточная обработка предусматривает организацию нитей исполнения в рамках одной

программы.
В результате возникает иллюзия много задачной обработки.
Для реализаций

нити исполнения используется аппаратный таймер, который выполняет переключение процессора с одной нити на другую.
Оформляется нить в виде подпрограммы.
Нити исполненияМногопоточная обработка предусматривает организацию нитей исполнения в рамках одной программы. В результате возникает иллюзия много задачной

Слайд 24Программные прерывания
Программные прерывания в отличие от аппаратных прерываний происходят синхронно

с работой процессора.
Они абсолютно предсказуемы.
Инициируются с помощью команды процессора
INT

N
Где N – номер вектора прерывания

Упражнение №4. Программа mesint.asm.
Напишите программу, которая использует вектор прерывания 05. Адрес обработчика прерывания равен 40. Обработчик прерывания выполняет вывод контрольного сообщения «OK!».

Программные прерыванияПрограммные прерывания в отличие от аппаратных прерываний происходят синхронно с работой процессора.Они абсолютно предсказуемы.Инициируются с помощью

Слайд 25Программа
Переход Начать
байт 30 |Таймер вектор 02
байт

00 |Системный вектор 03
байт 00 |Системный вектор 04


байт 40 |Вектор программного прерывания
"OK!" |Байты сообщения
Начать:
Установить бит I(nterrupt) |Разрешить прерывания
Вызвать прерывание 05
Стоп
ORG 30 |Обработчик аппаратного таймера
NOP
Выйти из прерывания
ПрограммаПереход Начать  байт 30 |Таймер вектор 02  байт 00 |Системный вектор 03  байт 00

Слайд 26Программа
ORG 40 ;Обработчик прерывания
Сбросить бит I(nterrupt) |Запретить прерывания
SR |Сохранить

флаг
BL |Регистр в стек
AL |Регистр в стек
CL |Регистр в

стек
|Вывод сообщения:
BL <= 06 |Адрес байта сообщения
AL <= C0 |Адрес видео памяти
CL <= 03 |Число байтов сообщения
ПрограммаORG 40 ;Обработчик прерыванияСбросить бит I(nterrupt)  |Запретить прерыванияSR |Сохранить флагBL |Регистр в стекAL |Регистр в стек

Слайд 27Программа
Выполнять:
DL

BL=BL+1
CL=CL-1
Если Z=0 то Выполнять
|Восстановить регистры
CL
AL
BL
SR
Выход из обработчика
Конец

ПрограммаВыполнять: DL

Слайд 28Контрольные задания
Контрольное задание №1. Дан алгоритм работы обработчика прерывания

для вывода показаний на цифровом дисплее. (см. далее)
Показания выводятся в

интервале от 00 до 99

Напишите программу disp1.asm которая использует программное с номером N для вывода очередного показания на цифровом дисплее.

Контрольные заданияКонтрольное задание №1. Дан алгоритм работы  обработчика прерывания для вывода показаний на цифровом дисплее. (см.

Слайд 29Алгоритм вывода показаний
Перейти main
Вектор прерывания таймера
Программный вектор прерывания N
Коды цифр

от 0 до 9 правый дисплей
Коды цифр от 1 до

9 левый дисплей
main:
al <= Код нуля с права
Порт 02 <= al
al <= Код нуля слева
Порт 02 <= al
bl <= Адрес кода нуля с права
cl <= Адрес кода единицы слева
|Вызов программного прерывания
go:
Установить флаг I(nterrupt)
Задержка 10 итераций
Вызвать прерывание N
Перейти go
Стоп
Пустой обработчик таймера
Обработчик программного прерывания
Конец

См. далее

Алгоритм вывода показанийПерейти mainВектор прерывания таймераПрограммный вектор прерывания NКоды цифр от 0 до 9 правый дисплейКоды цифр

Слайд 30Продолжение, программный обработчик
Сбросить флаг I(nterrupt)
|Вывод цифры справа
al

02

+1
Перейти если z=1 left_nine
Перейти next
left_nine:
Сравнить bl,Адрес символа 9 справа
Перейти если z=1 yes
Перейти next
yes:
Вывести 0 слева и справа
bl = адрес 0 справа, cl = адрес 1 слева
Переход no
|Вывод новой цифры справа

См. далее

Продолжение, программный обработчикСбросить флаг I(nterrupt)|Вывод цифры справаal

Слайд 31Продолжение
next:
bl = bl + 1
Сравнить bl,Адрес символа 9 справа +

1
Перейти если z = 1 ok
Перейти no
ok:
bl

справа
al <= Адрес bl
Порт 02 <= al
|Вывод цифры с лева
al <= Адрес cl
Порт 02 <= al
cl = cl + 1
no:
|Выход из прерывания
Выход из обработчика

См. далее

Продолжениеnext:bl = bl + 1Сравнить bl,Адрес символа 9 справа + 1Перейти если z = 1 okПерейти nook:bl

Слайд 32Контрольные задания
Контрольное задание №2. Напишите программу disp2.asm которая использует прерывание

таймера для вывода очередного показания на цифровом дисплее.
Контрольное задание №3.

Напишите программу passw.asm. В памяти ЭВМ находится кодовое слово freeway.
Пользователь программы вводит кодовое слово с помощью виртуальной клавиатуры эмулятора. После нажатия клавиши ENTER выполняется проверка ввода к кодовым словом в памяти, при удачной проверке на VDU выводится символ Y иначе символ N.
Контрольные заданияКонтрольное задание №2. Напишите программу disp2.asm которая использует прерывание таймера для вывода очередного показания на цифровом

Слайд 33Контрольные задания
Контрольное задание №4. Программа twothread.asm. Две нити исполнения.
Первая

нить используется для управления работой термостата. Термостат должен постоянно поддерживать

контрольную температуру равную 20 градусов Цельсия.
Вторая нить служит для управления работой шагового двигателя. Выполнение кода нити обеспечивает вращение ротора против часовой стрелки.

В программе регистр DL используется в качестве мультиплексора.
Если регистр содержит код 00 – запускается нить термостата
Если код 01 – запускается нить двигателя.

Контрольные заданияКонтрольное задание №4. Программа twothread.asm. Две нити исполнения. Первая нить используется для управления работой термостата. Термостат

Слайд 34Программа
Перейти Начать
DB 20 |Обработчик таймера
Начать:
Установить бит I(nterrupt)

|Разрешить прерывания
AL Порт

03
DL <= 00 |Код переключения
AL <= 11 |Запустить двигатель
AL => Порт 05
Выполнять: |Цикл программы
NOP
Установить бит I(nterrupt) |Разрешить прерывания
Перейти Выполнять
ПрограммаПерейти Начать DB 20 |Обработчик таймера Начать: Установить бит I(nterrupt) |Разрешить прерывания AL Порт 03 DL

Слайд 35Программа
ORG 20 |Обработчик таймера
SR
Установлен в DL бит 0

|Нить термостата?
Если Z=1 то Пуск |Да
CALL

60 |Нить двигателя
DL <= 00 |Переключение
Перейти Выход |На выход
Пуск:
CALL 70 |Нить термостата
DL <= 01 |Переключение
Выход:
SR
Выход из прерывания
ORG 60 |Нить двигателя
Сбросить бит I(nterrupt)
SR
ПрограммаORG 20 |Обработчик таймера SR Установлен в DL бит 0 |Нить термостата?  Если Z=1 то Пуск

Слайд 36Программа
Цикл. Правый сдвиг AL |Повернуть ротор
AL => Порт 05
SR
Завершить нить
ORG

70 |Нить термостата
Сбросить бит I(nterrupt)
AL
SR
AL

Порт 03
В AL бит 0 установлен ? |Выключить нагрев?
Если Z = 0 то Выключить |Да
Перейти Нагрев |Нет
ПрограммаЦикл. Правый сдвиг AL |Повернуть роторAL => Порт 05SRЗавершить нитьORG 70 |Нить термостата Сбросить бит I(nterrupt) AL

Слайд 37Программа
Выключить:
AL Порт 03

Переход Фин
Нагрев:
AL Порт 03
Фин:

|Завершить обработчик
SR
AL
Завершить нить
Конец
ПрограммаВыключить: AL Порт 03 Переход ФинНагрев: AL Порт 03Фин: |Завершить обработчик SR ALЗавершить нитьКонец

Слайд 38Нити исполнения (Потоки)
Чтобы в эмуляторе наблюдать несколько устройств в работе,

нужно снять отметку флажка «Show only one peripheral at a

time» на вкладке «Configuration».
После запуска программы окна устройств могут быть наложены друга на друга.
Их нужно «растащить» с помощью мыши, используя заголовок окон. Рабочая кнопка левая.
Нити исполнения (Потоки)Чтобы в эмуляторе наблюдать несколько устройств в работе, нужно снять отметку флажка «Show only one

Слайд 39Нити исполнения
После запуска программы можно поэкспериментировать, увеличивая или уменьшая частоту

работы процессора и период срабатывания таймера.

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

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика