
Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра АСУ
МЕТОДИЧНІ ВКАЗІВКИ
ДО КУРСУ ЛАБОРАТОРНИХ РОБІТ
для студентів базового напрямку
«Комп’ютерні науки»
з дисципліни:
«Архітектура комп’ютерів»
Затверджено на засіданні
кафедри АСУ
протокол №_________
від «__» _________ 20__ р.
Львів - 2007
Методичні вказівки до виконання лабораторних робіт з дисципліни «Архітектура комп’ютерів»для студентів базового напрямку «Комп’ютерні науки» / Укл. Стрямець С. П. - Львів: Національний університет “Львівська політехніка”, 2007.
Укладачі: Стрямець С. П, к.т.н., доц.,
Ткаченко Р. О., д.т.н. проф.
Відповідальний за випуск: Шпак З.Я., к.т.н., доц.
Рецензенти: Різник В. В., д.т.н. проф.
Методичні вказівки обговорено та схвалено на засіданні кафедри АСУ
Протокол №_________від “___” ____________2007р.
Лабораторна робота №1
Тема: Загальна структура мікролабораторії і процесора.
Мета: Вивчити структуру мікролаборатоії і процесора, і після чого написати програму за вказівками поданими нижче.
Мікролабораторія являє собою мікрокомп'ютер на базі однокристального мікропроцесора "КР580ИК80А ".
У мікропроцесорі є такі 8-бітні регістри :
А-акумулятор, в якому знаходиться результат виконання довільної арифметико-логічної 8-бітної операції;
F-регістр прапорців (ознак);
В, С, D, Е, H, L-регістри загального призначення. Вони об'єднуються у 16-бітні регістри по парах:AF, BC,DE, HL.
Команда може займати від одного до трьох байтів: перший байт -код операції, другий та третій - 8-бітний або 16-бітний операнд (в залежності від операції).
Після виконання арифметико-логічної команди в мікропроцесорі встановлюються ознаки результату, які зберігаються у двійковому вигляді і називаються прапорцями. У більшості мікропроцесорів існують стандартні прапорці :
CARRI-перенос за межі регістра;
ZERO - нульовий результат;
PARITY- результат має парну кількість одиничок;
SIGN - знак числа (старший біт результату);
На прапорці не впливають команди пересилки, розгалуження та вводу-виводу.
Завдяки існуванню прапорців обчислювальний процес може розгалужуватись трьома видами команд:
1. Умовними переходами на мітку в залежності від стану прапорців
2. Умовними викликами підпрограм;
3. Поверненнями з підпрограм за станом прапорців.
Мнемоніка розгалужуюгих команд:
Команди розгалуження розділяються на умовні переходи (J), умовні виклики (С), умовні повернення (R):
JC, СС, RC - перехід виконується, якщо встановлений прапорець переносу;
JNC, CNC, RNC - виконується, якщо немає переносу;
JZ, CZ, RZ - виконується, якщо нуль;
JNZ, CNZ, RNZ- виконується, якщо не нуль;
JP, СР, RP - виконується, якщо результат додатній;
JM, CM, RM - виконується, якщо результат від'ємний;
JPO, СРО, RPO - виконується, якщо встановлений прапорець парності;
JPE, CPE, RPE - виконується, якщо не встановлений прапорець парності.
На стан прапорців не впливають такі команди:
команди переходу; команди виклику підпрограм; команди повернень з підпрограм, а також:
"ІNX" - 16- бітного інкременту;
"DCX" - 16- бітного декременту;
Вводу "IN", виводу "ОUТ" ;
Регістрові пересилки "MOV', "SHPL";
"ХСНG"-обміну регістрових пар "DE" і "HL"
"XTHL"- обміну верхівки стека і "HL";
"MVI"-завантаження регістра;
"LXI"- завантаження регістрової пари;
"PUSH" - опускання в стек регістрової пари;
"POP"- виймання із стека регістрової пари;
"NOP" порожня команда;
"LDA" та "LDAX"- читання з пам'яті в акумулятор за безпосередньою адресою або за адресою, яка знаходиться в регістровій парі;
"STA" та "STAX"- аналогічні команді-запису –акумулятора в пам'ять;
"LHLD" - читання двох байт по безпосередній адресі та завантаження їх у регістрову пару "HL";
"SHLD"- запис "HL" в пам'ять (протилежна команда).
Решта команд встановлюють прапорці відповідно з їх призначенням:
"INR", "DCR" - восьмибітного інкременту та декременту :
-
арифметичні команди ADD, ADC, ADI, SUB, SBB, SUI;
-
логічні команди ANA, ORA, XRA;
-
команди порівняння CMP, CPI;
- команди зсуву через перенос та спеціальні команди RAL, RAR- додавання регістрових пар до пари HL - DAD;
У мікропроцесорі існують спеціальні 16- бітні регістри :
SP - вказівник стеку;
PC - програмний лічильник.
У "PC" знаходиться адреса команди, де на даний момент виконується програма.
Стек - це організація даних за принципом - останій увійшов, першим вийшов. У "SP" знаходиться адреса верхівки стека. Якщо у стек записуються дані (командою "PUSH") або адреса (командами виклику підпрограм), то "SP" зменшується на 2, тобто стек зростає від кінця пам'яті до початку.
Пам'ять розділено на постійну і оперативну, у постійній пам'яті знаходиться монітор - програма, на яку передається управління після натиснення клавіші "СБРОС". Монітор дозволяє вводити і запускати в абсолютному шістнадцятковому коді програму користувача, а також має тестову програму, яка грає мелодію.
В оперативній пам'яті (її початок знаходиться за адресою #8000) розміщені програми користувача, стек та робочі комірки монітора .
Для введення програми її треба перед тим відтранслювати з допомогою таблиці кодів. Трансляція виконується в такій послідовності: записується в 16-ій формі адреса команди, код операції, операнди (якщо передбачені). Після того програма готова виконати наступні дії:
-
Натиснути "СБРОС" ;
-
Набрати на клавіатурі адресу початку програми (8000);
-
Натиснути клавішу "УСТ. АДР" . Набрана адреса повинна з'явитись на чотирьох лівих індикаторах. Якщо адреса не з'явилась, або з'явилась з помилкою, то повторити з пункту 1.
-
Набирати на двох правих індикаторах коди програми і даних, натискаючи після кожного байту клавішу "ЗАП".
-
Перевірити введені коди, рухаючись по пам'яті за допомогою клавіш "АД-", "АД+". Якщо знайдено код з помилкою, набрати вірне значення і натиснути "ЗАП". Якщо адреса коду, яка висвічується на чотирьох лівих індикаторах не співпадає з адресою, яка вказана у тексті програми, то повторити ввід з пункту 1.
6. Встановити адресу початку програми і натиснути "ПУСК".
У лабораторній роботі необхідно ввести і виконати програму, яка вводить дані з перемикачів, обробляє їх і виводить результат на світлодіоди.
Процесор отримує і видає інформацію назовні через інтерфейс вводу/виводу - мікромодуль "КР580ВВ55А". Інтерфейс має три 8- бітні порти, до яких під'єднані клавіатура (крім клавіші "СБРОС"), світлодіоди, перемикачі, гучномовець. Обмін з інтерфейсом йде через акумулятор за допомогою команд "IN","OUT". Перед тим, як працювати з інтерфейсом, його потрібно запрограмувати за допомогою керуючого коду, що вказує, які порти повинні працювати на ввід, а які - на вивід.
Завдання
Виконати програму для всіх 11 пунктів таблиці 1, які змінюють байти #8006, #8007, #8008.
Після кожного запуску перевіряти, як впливають стани перемикачів на світлодіоди, записувати стани світодіодів в звіт. Необхідно виконати 11 запусків програми приведеної в таблиці 1, які відрізняються байтами 8006-8008, які подані в таблиці 2.
Таблиця 1
Адреса |
Програма |
Коментар |
|
8000 |
MVI A,#81 |
3E,8l |
Завантажити в акумулятор код для програмування інтерфейса |
8002 |
OUT#FB |
D3,FB |
Вивести вміст акумулятора на програмуючий порт інтерфейса |
8004 |
Ml: IN#FA |
DB,FA |
Ввід у акумулятор стан перемикачів з порту #FA |
8006 |
NOP |
00 |
Порожні команди для резервування місця під інші команди |
8007 |
NOP |
00 |
|
8008 |
NOP |
00 |
|
8009 |
OUT #F9 |
D3,F9 |
Вивід вмісту акумулятора на порт світло діодів |
800В |
JMP M1 |
СЗ,04э80 |
Безумовний перехід. Замість мітки записується її адреса у вигляді: молодший байт, старший байт |
Таблиця 2
|
Байти з адресою |
Коментар |
||
8006 |
8007 |
8008 |
||
1 |
NOP
|
NOP
|
NOP
|
Порожня операція |
2 |
XRI
|
#1F |
NOP
|
Сума акумулятора по MOD 2 з байтом #1F |
3 |
RLC
|
RLC
|
NOP
|
Циклічний зсув акумулятора вліво на 2 біта |
4 |
RRC
|
RRC
|
NOP
|
Циклічний зсув акумулятора вправо на 2 біта |
5 |
STC
|
RAL
|
NOP
|
Встановлення прапорця переносу і зсув акумулятора вліво через перенос |
6 |
STC
|
RAR
|
NOP
|
Встановлення прапорця переносу і зсув акумулятора вправо через перенос |
7 |
MVI C
|
#0A |
ORA C
|
Завантажити у регістр "С" число #0А (00001010) і диз'юнкція регістра "С" з акумулятором |
8 |
MVI C
|
#0A |
ANA С
|
Завантажити у регістр "С" число #0А (00001010) і кон'юнкція регістра "С" з акумулятором |
9 |
MVI С
|
#0A |
XRA C
|
Завантажити у регістр "С" число #0А (00001010) і сума по MOD 2 регістра "С" з акумулятором |
10 |
MVI C
|
#0A |
ADD С
|
Завантажити у регістр "С" число #0А (00001010) і додавання акумулятора з регістром "С" |
11 |
MVI C
|
#0A |
SUВ C
|
Завантажити у регістр "С" число #0А (00001010) і віднімання акумулятора з регістром "С" |
Результати роботи програми описати у вигляді станів світлодіодів. Наприклад, перший пункт таблиці виглядає так:
0 0 0 0 X1 X2 X3 0
-
- світлодіод згасає незалежно від стану перемикачів
-
- світлодіод світиться незалежно від стану перемикачів
Xj - стан світлодіода залежить від стану перемикача у прямому напрямку
Yj - стан світлодіода залежить від стану перемикача у зворотньому напрямку.