МПС 3 курс Практические задания 05 Взаимодействие с внешними устройствами - BysonHunter/Tavrich_college GitHub Wiki
🏠 Главная · Микропроцессорные системы · 3 курс · Практические работы по МДК.02.01 «Микропроцессорные системы»
Практическая работа №5
Взаимодействие с внешними устройствами через программу на ассемблере
Цель работы
Приобрести навыки программного ввода-вывода на КР580ВМ80:
- использовать команды
INиOUT; - работать с портами эмулятора;
- выводить текст и графические точки на виртуальный монитор.
1. Ввод-вывод в КР580ВМ80
КР580ВМ80/Intel 8080 имеет отдельное пространство портов ввода-вывода.
Вывод
OUT port
Передаёт содержимое аккумулятора A в указанный порт.
Ввод
IN port
Читает байт из порта в аккумулятор A.
2. Порты эмулятора
По исходной методичке используются:
| Порт | Устройство |
|---|---|
00h |
виртуальный монитор |
01h |
виртуальный дисковод |
02h |
виртуальный жёсткий диск |
03h |
сетевой адаптер |
04h |
принтер |
Конкретное поведение устройств зависит от версии эмулятора.
3. Виртуальный монитор
Окно монитора имеет сокращённый и подробный вид.

Формат управляющего байта
По описанию эмулятора первый байт содержит:
- старший бит:
0— текстовый режим;1— графический режим;
- остальные 7 бит — код цвета.
Исправление исходного описания
В исходной методичке указана «глубина цвета 128 бит». Это некорректно. Семь бит дают:
2^7 = 128
различных кодов цвета. То есть речь идёт о 128 значениях цвета, а не о 128 битах на пиксель.
4. Текстовый режим
Передаются два байта:
Байт 1: 0ccccccc
Байт 2: код символа
Пример управляющего байта:
01010000b = 50h
Второй байт — код символа из таблицы, поддерживаемой эмулятором.
5. Графический режим
Для одной точки передаются три байта:
Байт 1: 1ccccccc
Байт 2: X
Байт 3: Y
Диапазон координат:
X = 00h...FFh
Y = 00h...FFh
Начало координат — левый верхний угол.
6. Задание 1. Вывод латинского алфавита
Вывести строчные латинские буквы по порядку:
a b c ... z
Исходные значения
B = 61h ; ASCII 'a'
C = 1Ah ; 26 символов
Алгоритм
B ← 61h.C ← 1Ah.- Загрузить в
Aуправляющий байт текстового режима, например50h. - Выполнить
OUT 00h. - Загрузить в
Aкод символа изB. - Выполнить
OUT 00h. INR B.DCR C.- Если
C ≠ 0, повторить цикл. - Выполнить
HLT.
Каркас программы
MVI B, 61h
MVI C, 1Ah
NEXT:
MVI A, 50h
OUT 00h
MOV A, B
OUT 00h
INR B
DCR C
JNZ NEXT
HLT
После выполнения сохранить изображение экрана средствами эмулятора и приложить его к отчёту.
7. Задание 2. Графические примитивы
Нарисовать по точкам:
- отрезок;
- треугольник;
- прямоугольник;
- квадрат.
Порядок вывода одной точки
1. A ← управляющий байт графического режима
2. OUT 00h
3. A ← X
4. OUT 00h
5. A ← Y
6. OUT 00h
Пример управляющего байта графического режима:
11010000b = D0h
Подсказка
Горизонтальная линия:
Y = const
X = X0, X0+1, X0+2, ...
Вертикальная линия:
X = const
Y = Y0, Y0+1, Y0+2, ...
Для диагонали можно одновременно изменять X и Y.
8. Контрольные вопросы
- Чем пространство портов отличается от адресного пространства памяти?
- Что делает
OUT 00h? - Откуда команда
OUTберёт выводимый байт? - Куда команда
INпомещает считанный байт? - Как отличить текстовый режим от графического?
- Сколько значений цвета можно закодировать 7 битами?
- Сколько байт передаётся для одного текстового символа?
- Сколько байт передаётся для одной графической точки?
- Где находится начало координат?
- Как организовать цикл вывода последовательности символов?
9. Содержание отчёта
- Цель.
- Таблица портов.
- Описание протокола монитора.
- Листинг задания 1.
- Скриншот алфавита.
- Листинг задания 2.
- Скриншоты графических объектов.
- Ответы на контрольные вопросы.
- Вывод.