- •Минобрнауки россии
- •Изучение команд микропроцессора кр580, разработка программы вывода информации на дисплей
- •305040, Г. Курск, ул. 50 лет Октября, 94.
- •1 Цель работы
- •2 Краткая характеристика исследуемого процессора
- •2.1 Архитектура микропроцессора кр580вм80
- •2.2 Регистр признаков кр580
- •2.3 Регистры мп кр580
- •2.4 Пространства памяти и ввода-вывода мп кр580
- •2.5 Работа с внешними устройствами мп кр580
- •3 Домашнее задание
- •4 Написание программы на ассемблере для мп кр580
- •5 Лабораторное задание
- •6 Отчет
- •7 Контрольные вопросы
- •Библиографический список:
4 Написание программы на ассемблере для мп кр580
Для наглядного описания функционирования программ микропроцессора КР580 рассмотрим пример программы вывода символов и графики на монитор с использованием счетчиков и применением циклов:
Пример: Разработать программу вывода всех возможных символов в кодировке DOSна дисплей с изменением цвета каждого символа, провести прямую линию, каждый пиксель которой будет отличаться цветом от предыдущего.
Решение:
Для вывода символов на экран необходимо использовать двухбайтные команды для монитора, где 1 байт хранит информацию о цвете символа, 2 байт хранит информацию о самом символе в кодировке DOS. Вывод на экран производится командойOUTN(гдеN– номер порта вывода), в нашем случаеOUT00. Необходимо отправить 2 байта для вывода одного символа. Данные для вывода 2х байт будем располагать в регистрахBи С соответственно. После вывода 2х байт в монитор необходимо декрементировать В и С, соответственно изменится цвет и символ в следующей передаче данных. Стартовые значения для регистров В - 7Fи С –FF, после выполнения 256 циклов программы регистр С обнулится, далее необходимо вычесть его из аккумулятора, где находится также значение 00, и получить флагZ. По командеJNZадр16 программа будет выполнять условия цикла.
Ячейка | Мнемоника | Комментарий
0000 MVIB,7F; Ввод в регистр В цвета для 1го символа
0002 MVIC,FF; Ввод в регистр С кода 1го символа
0004 MOVA,B; Ввод в аккумулятор цвета символа
0005 OUT00 ; Вывод цвета из аккумулятора в монитор
0007 MOVA,C; Ввод в аккумулятор код символа
0008 OUT00 ; Вывод кода символа в монитор
000А DCRB; Декремент кода цвета
000BDCRC; Декремент кода символа
000С MVIA,00 ; Ввод в аккумулятор нуля
000ESUBC; Вычитания из нуля кода символа
000FJNZ0004 ; Проверка аккумулятора на ноль
0012 HLT ; Останов
Для вывода графического пикселя на экран необходимо использовать трехбайтовую команду монитора. Первый байт содержит код цвета пикселя, второй – координату по оси х, третий - координату по у. Для того чтобы провести прямую линию, следует декрементировать значение х и фиксировать значение у в каждом цикле, или наоборот. Чтобы получить разноцветную линию, байт кода цвета необходимо также декрементировать в каждом цикле. К уже имеющимся регистрам-счетчикам В и С добавляем регистр-счетчик D, теперь В хранит код цвета пикселя (8F-FF), С – координату по х, D – координату по у.
Ячейка | Мнемоника | Комментарий
0000 MVIB,FF; Ввод счетчика цвета
0002 MVIC,7F; Ввод координаты х
0004 MVID,FF; Ввод счетчика координаты у
0006 MOVA,B; Ввод в аккумулятор цвета пикселя
0007 OUT00 ; Вывод цвета из аккумулятора в монитор
0009 MOVA,C; Ввод в аккумулятор координаты х
000AOUT00 ; Вывод координаты в монитор
000CMOVA,D; Ввод в аккумулятор счетчика у
000DOUT00 ; Вывод в монитор счетчика у
000FDCRB; Декремент кода цвета
0010 DCRD; Декремент координаты у
0011 MVIA,00 ; Ввод в аккумулятор нуля
0013 SUBB; Вычитания из нуля координаты н
0014 JNZ0004 ; Проверка аккумулятора на ноль
0017 HLT; Останов
Рисунок 3 – Монитор эмулятор с выполненными программами 1 и 2.