Опис програми на асемблері для мп кр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.
Лабораторне завдання
Створити програму виведення на монітор свого Імені і Прізвища, обмальованими прямокутником довільного кольору
Звіт за формою і змістом повинен містити функціональну схему КР580 та Програму в мнемонічному вигляді з коментарями, що пояснюють роботу кожної команди (див. Приклад).
Контрольні питання
Опишіть принцип функціонування мікропроцесора КР580.
Назвіть відомі вам команди.
Як працювати з регістром прапорів?
Типи адресації МП.
Назвіть максимальне число адресується пам'яті і пристроїв введення-виведення МП КР580.
