Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Archive / цмп / 2 Лабараторная работа КР580.doc
Скачиваний:
447
Добавлен:
12.04.2015
Размер:
338.43 Кб
Скачать

4 Написание программы на ассемблере для мп кр580

Для наглядного описания функционирования программ микропроцессора КР580 рассмотрим пример программы вывода символов и графики на монитор с использованием счетчиков и применением циклов:

Пример: Разработать программу вывода всех возможных символов в кодировке DOSна дисплей с изменением цвета каждого символа, провести прямую линию, каждый пиксель которой будет отличаться цветом от предыдущего.

Решение:

  1. Для вывода символов на экран необходимо использовать двухбайтные команды для монитора, где 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 ; Останов

  1. Для вывода графического пикселя на экран необходимо использовать трехбайтовую команду монитора. Первый байт содержит код цвета пикселя, второй – координату по оси х, третий - координату по у. Для того чтобы провести прямую линию, следует декрементировать значение х и фиксировать значение у в каждом цикле, или наоборот. Чтобы получить разноцветную линию, байт кода цвета необходимо также декрементировать в каждом цикле. К уже имеющимся регистрам-счетчикам В и С добавляем регистр-счетчик 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.