You are on page 1of 11

Національний технічний університет України

«Київський політехнічний інститут імені Ігоря Сікорського»


Факультет інформатики та обчислювальної техніки
Кафедра обчислювальної техніки

Архітектура комп’ютера
Лабораторна робота №5
ФОРМУВАННЯ СИСТЕМИ КОМАНД
ПРОЦЕСОРА, РОЗРОБКА ПРОГРАМ І
МІКРОПРОГРАМ ОБРОБКИ ІНФОРМАЦІЇ В
ЕОМ

Виконала:
Студентка групи ІО-01
Петренко О.С.
Перевірив Верба О. А.

Київ
2022 р.
ЛАБОРАТОРНА РОБОТА №5
ФОРМУВАННЯ СИСТЕМИ КОМАНД ПРОЦЕСОРА, РОЗРОБКА
ПРОГРАМ І МІКРОПРОГРАМ ОБРОБКИ ІНФОРМАЦІЇ В ЕОМ

Мета роботи – навчитися створювати системи команд процесорів,


розробляти алгоритми, програми і мікропрограми обчислення функцій,
використовувати двоадресні команди з регістровою адресацією, вводити дані
з пристрою вводу-виводу.

Завдання
012010 = 11110002
a7 = 1, a6 = 1, a5 = 1, a4 = 1, a3 = 0, a2 = 0, a1 = 0
№ Код Операція
Виконати операції Адреси
операції за
а5 а3 а1 1 00 0 1 X −Y а7 а6 а5 портів ЗП
кодом № з
табл. 7.1 РС РД
5 01 0 1 X Y
1 0 0 1,5,6 1 1 1 72H 74H
6 01 1 0 X &Y

Виконання роботи
Архітектура та алгоритм обчислення
Структура ОП Структура ЗП
00000H 0000H
0001H
Результат
0002H …

0004H Код пристрія вводу ЗП (РС)


0072H РС (пристрій вводу)
0006Н
Дані
0008H 0074H РД (пристрій вводу)

000АH
000СН

… Програма обчислення
0014H
0016H

FFFFFH FFFFH

Програма обчислень

Команда Код Операція


zjump 0000 Повертання, якщо ЗП не працює
xminusy 0001 X −Y
testing 0010 Тест ЗП
res 0011 Установка початкової адреси
inputx 0100 Зчитування ЗП
xnotxory 0101 𝑋⊕𝑌
notxandy 0110 X &Y
zapusOP 0111 Запис в оперативну пам’ять
readzOP 1000 Зчитування ОП
End 1001 Вихід з програми
Змістовний алгоритм

Структурна схема ЕОМ


Виконання мікропрограми обчислення функції
link l1:ct
link l2:rdm
link l3:rdd
link ewh:10
link M:z,z,z,z,z,z,z,z,14,13,12,11
link ra:3,2,1,0
link rb:7,6,5,4
accept dev[1]:I,72h,74h,12,2
accept dev_buf[1]:000DAh \X

\dani
dw 0001h:05h \Y
dw 0002h:72h
dw 0005h:0h \F1
dw 0006h:0h \F2
dw 0007h:0h \F3

dw 0020h: 000Ah

\programa
dw 000Ah:0001000000000010% \testing
dw 000Bh:0000000000100000% \zjump
dw 000Ch:0010000000000010% \inputx
dw 000Dh:0100000000000001% \readzOP
dw 000Eh:1000110000110001% \xminusy
dw 000Fh:0011100000000101% \zapusOP
dw 0010h:1010110000110001% \xnotxory
dw 0011h:0011100000000110% \zapusOP
dw 0012h:1011010000110001% \notxandy
dw 0013h:0011100000000111% \zapusOP
dw 0014h:0100110000000000% \end

\mikroprograma
ORG 0h{cjp nz,zjump;}
ORG 1h{cjp nz,xminusy;}
ORG 2h{cjp nz,testing;}
ORG 3h{cjp nz,res;}
ORG 4h{cjp nz,inputx;}
ORG 5h{cjp nz,xnotxory;}
ORG 6h{cjp nz,notxandy;}
ORG 7h{cjp nz,zapusOP;}
ORG 8h{cjp nz,readzOP;}
ORG 9h{cjp nz,end;}

\pochatkova adresa
res{and r7,r7,z;}
{or r7, r7, 000Ah;}

\zchituvannya komand
begin{ewh;oey;xor nil,r7,r7;}
{ewl;oey;or nil,r7,z;}
{cjp rdm,cp;r;or r14,bus_d,z;}

\perevirka
{and nil,r14,0400h;load rm,flags;}
{cjp not rm_z,next;}

{or nil, r14,z;ewl;oey;}


{r;or r15,bus_d,z;cjp rdm,cp;}

next{and nil,r14,8000h;load rm,flags;}


{cjp rm_z, one;}

{oey;or nil,r14,z;load rb;load ra;} \2-adresna


one{oey;or nil,r14,z;jmap;} \1-adresna

testing
{or nil,r15,z;oey;ewl;}
{i;cjp rdd,cp;or r15,bus_d,z;}
{or nil,r15,z;load rn,flags;}
{cjp nz,formadd;}

zjump
{cjp not rn_z,no_j;}
{or r7,r15,z;}
{cjp nz,begin;}
no_j{cjp nz,formadd;}

inputx
{add r15,r15,2,z;}
{or nil,r15,z;ewl;oey;}
{i;cjp rdd,cp;or r1,bus_d,z;}
{cjp nz,formadd;}

readzOP
{or r2,r2,r15;}
{cjp nz,formadd;}

xminusy
{and rb,rb,z;}
{or rb,rb,r2;}
{sub rb,ra,rb,nz;}
{cjp nz,formadd;}

zapusOP
{xor nil,r14,Z;oey;ewl;}
{cjp rdm,CP;W;or nil,Z,r3;oey;}
{cjp nz,formadd;}

xnotxory
{and rb,rb,z;}
{or rb,rb,r2;}
{nxor rb,rb,ra;}
{cjp nz,formadd;}

notxandy
{and rb,rb,z;}
{or rb,rb,r2;}
{sub r5,z,ra,z;}
{and rb,rb,r5;}
{cjp nz,formadd;}

formadd
{add r7,r7,1,z;}
{cjp nz,begin;}

end
{}
Результат виконання

X = DA16 Y = 516
F1 = DA16 – 516 = D516
F2 = DA16 ̅̅̅
⊕ 516 = FF2016
̅̅̅̅16 & 516 = 516
F3 = DA
Висновкок
У ході лабораторної роботи було розроблено мікропрограму для
обрахунку значення функції з використанням двоадресних команд. Було
закріплено знання у розробці алгоритмів, програм і мікропрограм функцій, а
також вдосконалено навички у роботі з прямою регістровою адресацією.

Відповіді на питання

1. Охарактеризуйте етап дешифрування (розпакування) команд.

Для розпакування команди нам потрібно визначити формат команди, тип


адресації, адресати операндів та результату, вибірку операндів.

2. Як сформувати двоадресну команду при прямій регістровій


адресації.
Двоадресні команди - команди основної групи. В команді
Вказуються два операнда, результат поміщається на місце одного з них.

В командах з прямою адресацією операндів адреса ОП міститься в


розрядах команди 9…0, тобто займає 10 розрядів. Це забезпечує
доступ до ОП з адресами від 0 до 1023. Програма і дані повинні бути
розміщені в цьому діапазоні адрес ОП. При використанні для прямої
регістрової адресації адреса (номер) РЗП займає тільки молодші
розряди адресного поля команди. Якщо для РЗП виділено в НОЗП 8
регістрів R0-R7. То для їх адресації достатньо 3 розрядів. В адресному
полі залишаеться 7 розрядів, тобто при регістровій адресації можно
побудувати двоадресну команду.

Приклад з лабораторної роботи :


DW 000Eh: 1001010000110001% \ _and
_and
{and rb, rb, z;}
{or rb, rb, r2;}
{and rb, rb, ra;}
{cjp nz, formadd;}

3. Як забезпечити правильне зчитування і запис даних у пам'ять з


урахуванням швидкодії пам'яті?

Для запису слова в ОП необхідно завантажити адресу комірки


пам'яті в РАД, а потім подати сигнал R (Read). Через визначений
проміжок часу на ШД встановлюється вміст комірки пам'яті, до якого
здійснювалося звертання. При цьому ОП виробляє сигнал готовності
RDM (ReaDy Memory). Через БД зчитане з пам'яті слово може бути
записане у визначений регістр процесора. При записі інформації в ОП
після завантаження адреси в РАД через БД виставляється слово, яке
повинне бути записане в пам'ять, а потім видається керуючий сигнал W
(Write). По завершенні запису в ОП формується сигнал RDM.
Локальна шина (ЛШ) процесора є 16-розрядною. Тому
завантаження РАД здійснюється в два етапи. В старші розряди запис
інформації супроводжується сигналом EWH, а в молодші - EWL.

Директива ACCEPT дозволяє задати швидкодію пам'яті за


допомогою перемінної RDM_DELAY, наприклад,

ACCEPT RDM_DELAY : 3

В даному випадку сигнал RDM буде формуватися з затримкою на 3


такти після видачі сигналу R або W.

4. Як записати інформацію в RA і RB, навіщо використовуються


зазначені регістри?

Директива link вказує, номери розрядів 16-розрядної локаль-

ної шини які мають бути приєднані до виводів 4-розрядних регістрів

RA, RB обрамлення БОД.

Наприклад, наступні директиви приєднають виводи RA до розрядів


молодшої тетради локальної шини, а RB до розрядів третьоютетради ЛШ:
Директива load
означає, що в регістр (RA або RB) буде завантажено значення, яке в даний час
перебуває на ЛШ.

Приклади застосування директиви load:load ra load rb.

АЛП містить арифметико-логічний блок (АЛБ) і надоперативний


запам'ятовуючий пристрій (НОЗП), до складу якого входять 16 регістрів
(R0...R15) та допоміжний регістр RQ. Інформація із НОЗП може видаватися
одночасно по двох каналах (А і В). Вибір регістрів здійснюється подачею
адрес RA і RB на відповідні входи НОЗП. Адреси можуть видаватися з
регістрів RA і RB або безпосередньо з ПМК, минаючи зазначені регістри
(відповідні зв'язки на рис. 16.1 умовно не показані). Запис адрес у RA і RB
відбувається відповідно сигналами EWA і EWB.

5. Поясніть призначення директиви мікроассемблера MACRO.


6. Як забезпечити обмін даними між процесором і ЗП в програмному
режимі?

You might also like