Изучить раздел "Микропроцессор КР580" по конспекту лекций и литературе:
Каган Б.М., Сташин В.В. "Основы проектирования микропроцессорных устройств автоматики". – М.: Энергоатомиздат. 1987.- с. 15-46.
Калабеков В.А., "Микропроцессоры и их применение в системах передачи и обработки сигналов". – М.: Радио и связь, 1988. - с. 74-107.
Балашов Е.П., Григорьев В.А., Петров Г.А. "Микро и мини ЭВМ". – Л.: Энергоатомиздат, 1984. – с.43-62.
Папернов А.А. "Логические основы цифровой вычислительной техники". Изд. 3-е, переработанное и дополненное. Учебное пособие для ВУЗов. М., "Советское радио", 1972. 592 с.
Угрюмов Е.П. "Цифровая схемотехника". - СПб.: БХВ-Петербург, 2001. - 528 с.: ил.
4 Написание программы на ассемблере для МП КР580
Для наглядного описания функционирования программ микропроцессора КР580 рассмотрим пример программы вывода символов и графики на монитор с использованием счетчиков и применением циклов:
Пример: Разработать программу вывода всех возможных символов в кодировке DOS на дисплей с изменением цвета каждого символа, провести прямую линию, каждый пиксель которой будет отличаться цветом от предыдущего.
Решение:
Для вывода символов на экран необходимо использовать двухбайтные команды для монитора, где 1 байт хранит информацию о цвете символа, 2 байт хранит информацию о самом символе в кодировке DOS. Вывод на экран производится командой OUT N (где N – номер порта вывода), в нашем случае OUT 00. Необходимо отправить 2 байта для вывода одного символа. Данные для вывода 2х байт будем располагать в регистрах B и С соответственно. После вывода 2х байт в монитор необходимо декрементировать В и С, соответственно изменится цвет и символ в следующей передаче данных. Стартовые значения для регистров В - 7F и С – FF, после выполнения 256 циклов программы регистр С обнулится, далее необходимо вычесть его из аккумулятора, где находится также значение 00, и получить флаг Z. По команде JNZ адр16 программа будет выполнять условия цикла.
Ячейка | Мнемоника | Комментарий
0000 MVI B,7F ; Ввод в регистр В цвета для 1го символа
0002 MVI C,FF ; Ввод в регистр С кода 1го символа
0004 MOV A,B ; Ввод в аккумулятор цвета символа
0005 OUT 00 ; Вывод цвета из аккумулятора в монитор
0007 MOV A,C ; Ввод в аккумулятор код символа
0008 OUT 00 ; Вывод кода символа в монитор
000А DCR B ; Декремент кода цвета
000B DCR C ; Декремент кода символа
000С MVI A,00 ; Ввод в аккумулятор нуля
000E SUB C ; Вычитания из нуля кода символа
000F JNZ 0004 ; Проверка аккумулятора на ноль
0012 HLT ; Останов
Для вывода графического пикселя на экран необходимо использовать трехбайтовую команду монитора. Первый байт содержит код цвета пикселя, второй – координату по оси х, третий - координату по у. Для того чтобы провести прямую линию, следует декрементировать значение х и фиксировать значение у в каждом цикле, или наоборот. Чтобы получить разноцветную линию, байт кода цвета необходимо также декрементировать в каждом цикле. К уже имеющимся регистрам-счетчикам В и С добавляем регистр-счетчик D, теперь В хранит код цвета пикселя (8F-FF), С – координату по х, D – координату по у.
Ячейка | Мнемоника | Комментарий
0000 MVI B,FF ; Ввод счетчика цвета
0002 MVI C,7F ; Ввод координаты х
0004 MVI D,FF ; Ввод счетчика координаты у
0006 MOV A,B ; Ввод в аккумулятор цвета пикселя
0007 OUT 00 ; Вывод цвета из аккумулятора в монитор
0009 MOV A,C ; Ввод в аккумулятор координаты х
000A OUT 00 ; Вывод координаты в монитор
000C MOV A,D ; Ввод в аккумулятор счетчика у
000D OUT 00 ; Вывод в монитор счетчика у
000F DCR B ; Декремент кода цвета
0010 DCR D ; Декремент координаты у
0011 MVI A,00 ; Ввод в аккумулятор нуля
0013 SUB B ; Вычитания из нуля координаты н
0014 JNZ 0004 ; Проверка аккумулятора на ноль
0017 HLT ; Останов
Рисунок 3 – Монитор эмулятор с выполненными программами 1 и 2.
Do'stlaringiz bilan baham: |