ОБФедеральное государственное автономное образовательное учреждение высшего образования
«Санкт-Петербургский национальный исследовательский
университет информационных технологий, механики и оптики»
Кафедра Вычислительной Техники
Дисциплина: Основы Вычислительной Техники
Лабораторная работа №6
«Обмен данными с ВУ по прерыванию»
Вариант 6855.
Выполнила: meow
Группа: Р3102
2017г
Задание:
Номер варианта: 6855
По выданному преподавателем варианту разработать и исследовать работу комплекса программ обмена данными в режиме прерывания программы. Основная программа должна изменять содержимое заданной ячейки памяти (Х), которое должно быть представлено как знаковое число. Область допустимых значений изменения Х должна быть ограничена заданной функцией F(X) и конструктивными особенностями регистра данных ВУ (8-ми битное знаковое представление). Программа обработки прерывания должна выводить на ВУ модифицированное значение Х в соответствии с вариантом задания, а также игнорировать все необрабатываемые прерывания.
Цель: изучение организации системы ввода-вывода базовой ЭВМ,
команд ввода-вывода и исследование процесса функционирования ЭВМ при обмене
данными по сигналам готовности внешних устройств (ВУ).
ОДЗ: [-3110, 3110]
ORG | 032 | |
SAVED_A: | WORD | ; Ячейка для проверки результата |
SAVED_C: | WORD | ; Ячейка, для хранения carry |
X : | WORD | ; X |
TMP: | WORD | ; Временное хранение результата |
MAX | 0020 | |
MIN | -0020 | |
MASK | FF00 | |
SAVE : | EX_SAVE | ; Функция, которая запоминает содержимое аккумулятора и carry |
MOV SAVE_A | ||
ROR | ||
MOV SAVE_C | ||
BR (EX_SAVE) | ||
BACK: | EX_BACK | ; Восстановления бита переноса и аккумулятора |
CLA | ; Восстановление бита С | |
ADD SAVED_C | ||
ROL | ||
CLA | ; Восстановить значение аккумулятора, не изменяя С | |
CMA | ||
AND SAVED_A | ||
BR (EX_BACK) | ||
LOOP: | CLA | ; Основная программа, которая декрементирует содержимое Х ; NOP |
ADD X | ||
DEC | ||
MOV X | ||
JSR CHECK | ||
NOP | ||
BR (LOOP) | ||
ORG | 000 | |
HANDLER: | EX_HANDLER | ; Обработчик прерываний |
JSR SAVE | ||
CHECK1: | TSF 1 | ; Если flaf 1 = 1, то выполняем F = -4X+1. Вывести на ВУ-1 ; NOP2 |
BR CHECK2 | ||
MOV TMP | ||
ADD TMP | ||
ADD TMP | ||
ADD TMP | ||
CMA | ||
INC | ||
INC | ||
JSR CHECK | ||
NOP | ||
OUT 1 | ||
CHECK2: | TSF 3 | ; Если flag 3 = 1, то вычесть Х из содержимого РД ВУ-3 |
BR RETURN | ||
IN 3 | ||
SUB X | ||
CHECK X | ||
MOV X | ||
RETURN: | JSR BACK | |
BR (EX_HANDLER) | ||
FIXED: | EX_FIXED | Перевести в 16-разрядную сетку |
MOV TMP | ||
AND MASK | ||
BEQ EX_FIXED | ||
CLA | ||
ADD TMP | ||
BR (EX_FIXED) | ||
CHECK: | WORD | Проверка на ОДЗ |
CLA | ||
ADD X | ||
SUB MAX | ||
BPL CHANGE | ||
ADD MAX | ||
SUB MIN | ||
BPL CHANGE | ||
BR (CHECK) | ||
CHANGE: | CLA | Если не удовлетворяет ОДЗ |
ADD MAX | ||
MOV X | ||
BR (CHECK) | ||
Методика проверки:
Входит ли изменённый Х в ОДЗ:
Загрузить комплекс программ в память БЭВМ. Изменить значение Х, находящееся в ячейке 034, на проверяемое число. Изменить точку останова NOP1, на HLT. Запустить программу. Записать значение аккумулятора в момент останова программы. Посчитать значение программы (), которое должно получится. Проверить, совпадает ли значение с тем, что должно было получиться. Если не совпадает, то число вышло за границы ОДЗ и ему присвоилось минимальное значение = -31Проверить корректность функции F = -4x + 1
Загрузить комплекс программ в память БЭВМ. Изменить значение Х, находящееся в ячейке 034, на проверяемое число. Изменить точку останова NOP2, на HLT. Установить кнопку «Готовность ВУ-3» Запустить программу Записать содержимое РДВУ-1 в момент останова программы. Ввести в клавишный регистр 034, нажать на кнопку ввода адреса, переписать число, хранящееся в ячейке 034. Посчитать значение функции F = -4x + 1 Сравнить полученное значение и значение в ячейке в ячейке 034. Если значения не равны, то число вышло за границы ОДЗ и ему присвоилось минимальное значение = -31Вывод: В ходе выполнения лабораторной работы я изучила организацию системы ввода-вывода базовой ЭВМ


