Цель работы: исследование методов подключения и организации обмена информацией с простейшими устройствами ввода-вывода. Изучение программных способов маскирования данных и организации условных переходов в микроЭВМ.
К командам ввода-вывода МП i8080A относятся команды IN <А1> и OUT <А1>. При выполнении команды IN <А1> микроЭВМ считывает число из входного устройства с адресом <А1> и записывает его в аккумулятор. При выполнении команды OUT <А1> МП записывает число из аккумулятора в выходное устройство с адресом <А1>. Так как адрес устройства указывается в одном байте, то с помощью этих команд микроЭВМ может обмениваться информацией не более чем с 256 внешними устройствами.
Обмен данными между микроЭВМ и внешними устройствами может вызываться как в определенных местах в программе, так и по сигналам прерывания. В последнем случае подпрограмма обмена данными с внешним устройством будет вызываться за счет перевода микроЭВМ в режим обслуживания прерывания.
Переключатели стенда используются для имитации передачи данных от внешнего устройства. К входному устройству (с адресом 05h или 20h) подключены светодиоды (I0 - I7) для индикации чисел, поступающих в него. Светодиоды O0 - O7 указывают число, записанное в выходном устройстве.
Простейшая программа (программа 6) перезаписи числа с входного устройства (с адресом 05h) в выходное устройство (с адресом 05h или 30h) имеет вид:
Программа 6
Адрес
|
Код
|
Метка
|
Мнемокод
|
Комментарий
|
0800
|
DB 05
|
CNT:
|
IN 05h
|
; Записать число из входного устройства с
; адресом 05h в аккумулятор
|
0802
|
D3 05
|
|
OUT 05h
|
; Записать число из аккумулятора в
; выходное устройство с адресом 05h
|
0804
|
C3 00 08
|
|
JMP CNT
|
; Идти на CNT
|
Организация условных переходов в микроЭВМ осуществляется с помощью регистра признаков МП (см. выше).
Регистр признаков имеет пять разрядов, каждый из которых устанавливается по определенному правилу в соответствии с выполнением МП последней команды (см. приложение).
Во многих случаях при выполнении программ необходимо проверять или изменять (маскировать) состояние одного или нескольких разрядов числа в аккумуляторе. Это можно осуществить с помощью следующих команд логических операций:
логического умножения числа в аккумуляторе и маски, которое очищает разряд числа, если в соответствующем разряде маски будет записан "0", и не изменяет его, если в разряде маски записана "1";
логического сложения числа в аккумуляторе и маски, которое устанавливает разряд числа в "1", если в таком же разряде маски будет записана " 1", и не изменяет его. если в этом разряде записан "0";
логического исключающего ИЛИ" числа в аккумуляторе и маски, которое инвертирует содержание разряда числа, если в соответствующем разряде маски записана "1", и не изменяет его, если, в этом разряде записан "0".
Примеры использования этих команд приведены в табл. 4.
Таблица 4.
Мнемокод
|
Машинный код
|
Число в аккумуляторе
|
Маска
|
Комментарий
|
Результат в аккумуляторе
|
ANI <D1>
|
Е6 <D1>
|
00111010
11111111
00000000
10101010
11110000
00001111
00100010
|
10101100
00100010
00100010
00100010
11111111
11111111
00000000
|
Логическое умножение содержимого аккумулятора с байтом D1
|
00101000
00100010
00000000
00100010
11110000
00001111
00000000
|
ORI <D1>
|
F6 <D1>
|
00111010
00001111
11110000
|
10101100
00001111
00001111
|
Логическое сложение содержимого аккумулятора с байтом D1
|
10111110
00001111
11111111
|
XRI <D1>
|
EE <D1>
|
00111010
00001111
11110000
|
10101100
00001111
00001111
|
Логическое "исключающее ИЛИ" содержимого аккумулятора с байтом D1
|
10010110
00000000
11111111
|
Проведение логических операций возможно также с содержимым аккумулятора и внутренними регистрами МП. В этом случае команды - однобайтные. При выполнении всех логических команд задействуются разряды Z, S, P, АС регистра признаков (в разряд CY записывается 0). Это позволяет проверять состояние любого разряда числа и выполнять условные переходы в программах. Программа маскирования отдельных разрядов числа (программа 7), записанного во входном устройстве, приведена ниже. Программа помещает результат маскирования в выходное устройство.
Программа 7
Адрес
|
Код
|
Метка
|
Мнемокод
|
Комментарий
|
0800
|
DB 05
|
CNT:
|
IN 05h
|
; Получить число из входного устройства
|
0802
|
E6 20
|
|
ANI 20h
|
; Выполнить логическую операцию
|
0804
|
D3 05
|
|
OUT 05h
|
; Записать результат в выходное устройство
|
0806
|
C3 00 08
|
|
JMP CNT
|
; Продолжать
|
Условные переходы организуются в программах с помощью команд условных переходов. При выполнении этих команд МП проверяет состояние соответствующего разряда регистра признаков. Если при проверке состояния разряда регистра признаков условие не подтверждается, то выполняется следующая по порядку команда программы. Все команды условных переходов - трёхбайтные: первый байт содержит код команды, второй и третий байты - адрес передами управления. Таким образом, команды условных переходов позволяют строить ветвящиеся алгоритмы и в зависимости от текущего значения результата выполнения программы переходить на различные участки программы.
Ниже приведена программа (программа 8) для определения "1" в пятом разряде числа, записанного во входном устройстве. Программа использует маскирование числа и условный переход.
Программа 8
Адрес
|
Код
|
Метка
|
Мнемокод
|
Комментарий
|
0800
|
DB 05
|
WAIT:
|
IN 05h
|
; Получить число из входного устройства
|
0802
|
E6 20
|
|
ANI 20h
|
; Проверить состояние пятого разряда числа
|
0804
|
CA 00 08
|
|
JZ WAIT
|
; Идти на WAIT, если в пятом разряде был 0
; (Z=1)
|
0807
|
CF
|
|
RST 1
|
; Окончить выполнение программы
|
В представленных ранее программах имел место лишь один цикл, в котором работала микроЭВМ. Программа ожидания появления "1" во втором и пятом разрядах числа, записанного во входном устройстве (программа 9), содержит два цикла.
Программа 9
Адрес
|
Код
|
Метка
|
Мнемокод
|
Комментарий
|
0800
|
DB 05
|
WAIT1:
|
IN 05h
|
; Получить число из входного
; устройства
|
0802
|
E6 04
|
|
ANI 00000100b
|
; Выключен ли второй переключатель?
|
0804
|
CA 00 08
|
|
JZ WAIT1
|
; Если нет, продолжить WAIT1
|
0807
|
3E FF
|
|
MVI A, FFh
|
; если да, зажечь светодиоды
|
0809
|
D3 05
|
|
OUT 05h
|
; выходного регистра
|
080B
|
DB 05
|
WAIT2:
|
IN 05h
|
; Получить число из входного
; устройства
|
080D
|
E6 20
|
|
ANI 00100000b
|
; выключен ли пятый переключатель?
|
080F
|
CA 0B 08
|
|
JZ WAIT2
|
; Если нет, продолжать WAIT2
|
0812
|
3E 00
|
|
MVI A, 00h
|
; Если да, погасить светодиоды
|
0814
|
D3 05
|
|
OUT 05h
|
; выходного регистра
|
0816
|
C3 00 08
|
|
JMP WAIT1
|
; Повторить программу
|
Задания
1. Ознакомьтесь с командами ввода-вывода МП i8080A.
2. Изучите группу логических команд и команд условной передачи управления.
3. Ознакомьтесь с разрядами регистра признаков МП и правилами записи в них "1".
4. Ознакомьтесь с программами 6, 7, 8, 9.
5. Самостоятельно разработайте программы: а) включения светодиодов выходного устройства, если число, записанное во входном устройстве, больше 3; б) включения светодиодов выходного устройства, если число, записанное во входном устройстве, больше 3, но меньше 8.
6. Видоизмените программу 8 так, чтобы микроЭВМ реагировала на 0 в пятом разряде при записанных "1" во всех остальных разрядах.
7. Исследуйте программу 6.
7.1. Введите в микроЭВМ программу 6. Осуществить пуск программы.
7.2. Убедитесь что при выполнении программы микроЭВМ постоянно переписывает данные с входного устройства в выходное. Для этого с помощью переключателей входного устройства измените числа, записанные в нем. Информация о числах в устройствах ввода-вывода отображается светодиодами.
8. Исследуйте программу 7.
8.1. Введите в микроЭВМ программу 7. Осуществите пуск программы и исследуйте результат выполнения по числу, записанному в выходное устройство.
8.2. Заменяя в программе 7 двухбайтную команду ANI <D> на однобайтные ANA A, XRA A, ORA А, исследуйте результат их выполнения по числу, записанному в выходном устройстве.
9. Исследуйте программу 8.
9.1. Введите в микроЭВМ программу 8. Осуществить пуск программы и убедитесь, что при ее выполнении микроЭВМ реагирует лишь на те числа во входном устройстве, которые содержат "1" в пятом разряде. После окончания выполнения программы (выполнения в программе команды RST 1) в разряде 3 регистра состояния записана "1".
9.2. Исследуйте видоизмененную программу 8, позволяющую микроЭВМ реагировать на "0" в пятом разряде при записанных "1" во всех остальных разрядах.
10. Исследуйте программу 9.
10.1. Введите в микроЭВМ программу 9. Осуществить пуск программы и убедитесь, что при наличии "1" лишь во втором разряде числа входного регистра светодиоды выходного регистра включены и микроЭВМ работает в цикле WAIT2 ожидания появления единицы в пятом разряде числа.
10.2. Запишите "0" во второй разряд входного устройства. Запишите "0" в пятый разряд входного устройства и убедитесь, что светодиоды выходного устройства выключаются и микроЭВМ находится при выполнении цикла WAIT1 программы.
10.3. Установите "1" одновременно во втором и пятом разрядах числа во входном устройстве и проверьте, что микроЭВМ последовательно выполняет оба цикла (WAIT1, WAIT2) программы.
11. Исследуйте программы, самостоятельно разработанные в п. 5 задания.
Содержание отчета
Отчет должен содержать: 1. Цель работы. 2. Результаты исследования выполнения программ 6-9. 3. Самостоятельно разработанные и исследованные в процессе выполнения лабораторной работы программы, указанные в п. 5 задания. 4. Выводы.
|