Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
з лабораторної роботи №2
з дисципліни: “Організація та функціонування комп’ютерів”
на тему: “Набір інструкцій навчального комп’ютера.загальний порядок виконання інструкці ”
Лабораторна робота № 2
Тема: Набір інструкцій навчального комп’ютера. Загальний порядок виконання інструкцій.
Мета: 1. Засвоїти порядок виконання програм у комп’ютері. Ознайомитися з форматом та набором інструкцій симулятора навчальної ЕОМ. Засвоїти формати і способи використання інструкцій звертання до пам’яті та інструкцій арифметичних операцій;
2. Засвоїти призначення регістра ознак процесора;
3. Ознайомитися з потактовим режимом роботи навчального комп’ютера.
4. Засвоїти базовий порядок виконання інструкції навчального комп’ютера та
навчитися досліджувати хід виконання окремих інструкцій.
Теоретичні відомості
Усі інструкції у навчальному ком’ютері поділяються за напрямками на:
За форматом коду інструкції;
За призначенням.
За форматом коду інструкції є адресні і безадресні
.
Усі інструкції навчального комп’ютера за призначенням можна розділити на такі групи:
1) інструкції звертання до пам’яті (LOAD та STORE);
2) арифметичні інструкції (ADD та SUB);
3) логічні інструкції (AND, OR, XOR та NOT);
4) інструкції вводу/виводу (INPUT та OUTPUT);
5) інструкції керування виконанням програми:
а) інструкція зупинки (HALT);
б) інструкції умовних переходів (JNZ, JZ, JP, JM, JNC та JC);
в) інструкція безумовного переходу (JMP);
6) інструкції зсувів (вліво (Left) та вправо (Right)):
а) інструкції логічного зсуву (LSL та LSR);
б) інструкції арифметичного зсуву (ASL та ASR);
в) інструкції циклічного зсуву (ROL та ROR);
г) інструкції циклічного зсуву через тригер ознаки переносу C (RCL та RCR).
1.1. Інструкції звертання до пам’яті:
1) LOAD ADR - завантажити (від англ. Load - завантажувати).
Наприклад, для того, щоб прочитати число з 15-ї або 2041-ої комірки пам’яті і записати його до акумулятора, необхідно використати :
Мнемонічний запис
Машинний код
LOAD 15
0000 0000 0000 1111
LOAD 2041
0000 1111 1111 1001
2) STORE ADR - зберегти (від англ. Store - зберігати)
Машинний код – 0001 aaaa aaaa aaaa; виконання – Акумулятор ( (ADDR)).
Наприклад, щоб записати значення вмісту акумулятора до 148-ї або 2043 комірки, необхідно використати такі машинні коди:
Мнемонічний запис
Машинний код
STORE 148
0001 0000 1001 0100
STORE 2043
0001 1111 1111 1011
Якщо нам потрібно у пам’яті перенести число з однієї комірки до іншої, однією командою цього зробити не можна. Потрібно скористатись послідовно двома командами - LOAD та STORE, причому акумулятор буде посередницьким пунктом, через який відбудеться передача.
Так, програма з двох інструкцій:
Мнемонічний запис
Машинний код
LOAD 28
0000 0000 0001 1100
STORE 56
0001 0000 0011 1000
виконує переміщення 16-розрядного числа, яке знаходилось у 28-й комірці пам’яті, до 56-ї комірки
1.2. Інструкції арифметичних операцій:
1) ADD ADR – арифметичне додавання (від англ. Addition -додавання)
Машинний код – 0010 aaaa aaaa aaaa; виконання – Акумулятор + (ADDR) ( Акумулятор.
2) SUB ADR – віднімання (від англ. Subtraction - віднімання).
Машинний код – 0011 aaaa aaaa aaaa; виконання: Акумулятор – (ADDR) ( Акумулятор
Хід роботи
1Призначення Регістру Ознак: Регістр ознак має три тригери:Z, S, C. На панелі навчального комп’ютера він розміщений біля акумулятора.
Прапорець Z (Zero - нуль) встановлюється у 1 (світиться), якщо результат операції дорівнює 0. Зрозуміло, що для команди ADD ця ознака встановиться лише у випадку, якщо до 0 додати 0, або якщо додаються два однакових числа з протилежними знаками.
Прапорець S (Sign - знак) встановлюється в 1, якщо результат операції – від’ємне число. Знову ж таки, інструкція ADD не може дати від’ємного результату за винятком чисел у доповняльному коді, яких ми поки-що не розглядаємо. Зрозуміло, якщо віднімати від меншого числа більше інструкцією SUB, отримаємо ознаку від’ємного результату S.
Прапорець C (Carry - перенос) встановлюється в 1, коли у результаті арифметичної операції (додавання чи віднімання) виникає перенос із старшого розряду результату або при виконанні операції зсуву вправо чи вліво крайній розряд числа вийшов за межі розрядної сітки. Так, наприклад, перенос виникне і, відповідно, встановиться тригер C, якщо додати два 16-ти розрядних числа у 16-ти розрядному процесорі:
2)Ввели у симулятор і виконали дослідження у потактовому режимі програми додавання двох чисел , яка була підготована у роботі №1.записали мікропрограму з необхідними поясненнями..
№
Мнемонічний запис
Код, що обробляється
Коментар
1
ЛАІ→РА
0000 0000 0000
Вибір адреси 1-ої інструкції і занесення її до РА
2
РА→РД
0000 0000 0000 0000 1010
Вибір коду інструкції з РА і занесення його до Регістра Даних
3
РД→РІ
0000 0000 0000 0000 1010
Декодування інструкції у РІ
4
РІ→РА
0000 0000 0000 1010
Вибір адреси 1-го операнда
5
РА→РД
0000 0000 0010 1100
Вибір коду 1-го операнда з пам’яті і запис його до РД
6
РД→А
0000 00000 0010 1100
Декодування інструкції у А
7
ЛАІ+1→ЛАІ
0000 0000 0001
Підготовка адреси нової інструкції
8
ЛАІ→РА
0000 0000 0001
Вибір адреси 2-ої інструкції і занесення її до РА
9
РА→РД
0010 0000 0000 1011
Вибір коду інструкції з РА і занесення його до Регістра Даних
10
РД→РІ
0010 0000 0000 1011
Декодування інструкції у РІ
11
РІ→РА
0000 0000 1011
Вибір адреси 2-го операнда
12
РА→РД
0000 0000 0001 0101
Вибір коду 2-го операнда з пам’яті і запис його до РД
13
РД+А→А
0000 0000 0100 0001
Виконання операції додавання
14
ZSC(A)→РО
000
Встановлення прапорців РО
15
ЛАІ+1→ЛАІ
0000 0000 0010
Підготовка адреси нової інструкції
16
ЛАІ→РА
0000 0000 0010
Вибір адреси 3-ої інструкції і занесення її до РА
17
РА→РД
0001 0000 0000 1100
Вибір коду інструкції з РА і занесення його до РД
18
РД→РІ
0001 0000 0000 1100
Декодування інструкції у А
19
РІ→РА
0000 0000 1100
Вибір адреси 3-го операнда
20
А→РД
0000 0000 0100 0001
Результат операції
21
РД→РА
0000 0000 1100
Вибір коду інструкції з РД і занесення його до РА
22
ЛАІ+1→ЛАІ
0000 0000 0011
Підготовка адреси нової інструкції
23
ЛАІ→РА
0000 0000 0011
Вибір адреси 4-ої инструкції
24
РА→РД
0111 1100 0000 0000
Вибір коду інструкції з РА і занесення його до РД
25
РД→РІ
0111 1100 0000 0000
Декодування інструкції у регістрі інструкції
3)Ввели у симулятор та виконали дослідження у покроковому режимі програми, яка вілнімала два числа А і В для значень коли А=В, А>B,A<B вибравши довільні значення . Виписали результати виконання досліджень і значення прапорців ознак у таблицю,взірець якої поданий у роботі №1
1)Коли А=В А=26,В=26
РА
РД
А
РІ
ЛАІ
РО
1-й крок
0000 000 0010
0000 0000 0010 1010
0000 0000 0010 1010
0000 0000 0000 1010
0000 0000 0001
Z
2-й крок
0000 0000 1011
0000 0000 0001 1010
0000 0000 0000 0000
0011 0000 0000 1011
00000000 0010
Z
3-й крок
0000 0000 1100
0000 0000 0000 0000
0000 0000 0000 0000
0001 0000 0000 1100
00000000 0011
Z
4–й крок
0000 0000 0011
0111 1100 0000 0000
0000 0000 0000 0000
01111100 0000 0000
0000 0000 0011
Z
У Регістрі Ознак засвітився прапорець Z , тому що результат операції дорівнює нулю.
2)Коли А>В,А=35, В=26
РА
РД
А
РІ
ЛАІ
РО
1-й крок
0000 0000 1010
0000 0000 0010 0011
0000 0000 0010 0011
0000 0000 0000 1010
0000 0000 0001
000
2-й крок
0000 0000 1011
0000 0000 0001 1010
0000 0000 0000 1001
0011 0000 0000 1011
0000 0000 0010
000
3-й крок
0000 0000 1100
0000 0000 0000 1001
0000 0000 0000 1001
0001 0000 0000 1100
0000 0000 0011
000
4–й крок
0000 000 0011
0111 1100 0000 0000
0000 0000 0000 1001
0111 1100 0000 0000
0000 0000 0011
000
Результат операції додатнє число, яке не виходить за межі розрядної сітки, тому ніякий прапорець у регістрі ознак не світиться.
3)Коли А<B,A=26,B=35
РА
РД
А
РІ
ЛАІ
РО
1-й крок
0000 0000 1010
0000 0000 0001 1010
0000 0000 0001 1010
0000 0000 0000 1010
0000 0000 0001
S,C
2-й крок
0000 0000 1011
0000 0000 0010 0011
1111 1111 1111 0111
0011 0000 0000 1011
0000 0000 0010
S,C
3-й крок
0000 0000 1100
1111 1111 1111 0111
1111 1111 1111 0111
0001 0000 0000 1100
0000 0000 0011
S,C
4–й крок
0000 0000 0011
0111 1100 0000 0000
1111 1111 1111 0111
0111 1100 0000 0000
0000 0000 0011
S,C
У регістрі ознак засвітився прапорець S тому що результат операції операції від’ємне число.засвітився прапорець C тому що результат вийшов за межі розрядної сітки .
4) а)Ввели у симулятор та виконали дослідження у потактовому режимі інструкції LOAD
У комірку 10(1010) занесли число 2(0010).Скориставшись інструкцією LOAD завантажили це число. Це ми зробили так: за допомогою двійкового коду інструкції LOAD завантажили значення з 10-ої комірки(0000 0000 1010) і занесли це число у нульову комірку(0000 0000 0000 0000)далі занесли двійковий код 0111 1100 0000 0000 у першу(0000 0000 0000 0001) комірку для того щоб задати доки інструкція буде виконуватись.Потім у ЛАІ за допомогою набірного поля встановили адресу першої інструкції 0000 0000 0000 0000 і виконали програму у потактовому режимі.Мікропрограма цієї роботи матиме вигляд:
№
Мнемонічний запис
Код що обробляється
Коментар
1
ЛАІ→РА
0000 0000 0000
Вибір адреси першої інструкції і занесення її до РА
2
РА→РД
0000 0000 0000 1010
Вибір коду інструкції з РА і занесення його до РД
3
РД→РІ
0000 0000 0000 1010
Декодування інструкції у РІ
4
РІ→РА
0000 0000 1010
Вибір адреси першого операнда
5
РА→РД
0000 0000 0000 0000
Вибір коду першого операнда і запис його до РД
6
РД→А
0000 0000 0000 0000
Виконання операції завантаження
7
ЛАІ+1→ЛАІ
0000 0000 0001
Підготовка адреси нової інструкції
8
ЛАІ→РА
0000 0000 0001
Вибір адреси 2-ої інструкції і занесення її до РА
9
РА→РД
0111 1100 0000 0000
Вибір коду інструкції РА і занесення до РД
10
РД→РІ
0111 1100 0000 0000
Декодування інструкції у РІ
б) Ввели у симулятор та виконали дослідження у потактовому режимі інструкції STORE
У комірку 10(1010) занесли число 2(0010).Скориставшись інструкцією STORE записали це число. Це ми зробили так: за допомогою двійкового коду інструкції STORE записали значення з 10-ої комірки(0001 0000 1010) і занесли це число у нульову комірку(0000 0000 0000 0000)далі занесли двійковий код 0111 1100 0000 0000 у першу(0000 0000 0000 0001) комірку для того щоб задати доки інструкція буде виконуватись. Потім у ЛАІ за допомогою набірного поля встановили адресу першої інструкції 0000 0000 0000 0000 і виконали програму у потактовому режимі. Мікропрограма цієї роботи матиме вигляд:
№
Мнемонічний запис
Код що обробляється
Коментар
1
ЛАІ→РА
0000 0000 0000
Вибір адреси 1-ої інструкції і занесення її до РА
2
РА→РД
0001 0000 0000 1010
Вибір коду інструкції з РА і занесення його до РД
3
РД→РІ
0001 0000 0000 1010
Декодування інструкції у РІ
4
РІ→РА
0000 0000 1010
Вибір адреси 1-го операнда
5
РА→РД
0000 0000 0000
Вибір коду 1-го операнда з пам’яті і запис його до РД
6
РД→А
0000 0000 1010
Винання операції зберігання
7
ЛАІ+1→ЛАІ
0000 0000 0001
Підготовка адреси нової інструкції
8
ЛАІ→РА
0000 0000 0001
Вибір адреси 2-ої інструкції і занесення її др РА
9
РА→РД
0111 1100 0000 0001
Вибір коду інструкції РА і занесення доРД
10
РД→РІ
0111 1100 0000 0001
Декодування інструкціїї у РІ
в)Ввели у симулятор та виконали дослідження у потактовому режимі інструкції SUB.За допомогою пульта управління занесли до 0-ої комірки пам’яті машинний код інструкції SUB 0011 0000 0000 0001, до 1-ої комірки число 240(двійковий код 0000 0000 1111 0000), а до акумулятора число15(0000 0000 0000 1111). У результаті ми отримаємо віднімання двох чисел, зяких одне знаходиться у комірці пам’яті за адресою 0000 0000 0001,а друге у акумуляторі, а сама інструкція розміщена у комірці пам’яті з адресою 0000 0000 0000. Для виконання інструкції до ЛАІ- лічильника адреси інструкції- занесли адресу розміщення у комірці пам’яті з адресою 0000 0000 0000. Натиснувши на кнопку ПУСК виконали програму у потактовому режимі
№
Мнемонічний запис
Код, що обробляється
Коментар
1
ЛАІ ( РА
0000 0000 0000
вибір адреси 1-ої інструкції і занесення її до Регістра Адреси
2
РА ( РД
0011 0000 0000 0001
вибір коду інструкції з РА і занесення його до Регістра Даних
3
РД ( РІ
0011 0000 0000 0001
декодування інструкції у Регістрі Інструкцій
4
РІ ( РА
0000 0000 0001
вибір адреси 1-го операнда
5
РА ( РД
0000 0000 1111 0000
вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних
6
А + РД ( А
1111 1111 0001 0000
виконання операції віднімання(2-й операнд – у акумуляторі)
7
ZSC(А) ( РО
SC
встановлення прапорців регістру ознак
8
ЛАІ + 1 ( ЛАІ
0000 0000 0001
підготовка адреси нової інструкції
Висновок: На даній лабораторній роботі ми
1.Засвоїли порядок виконання програм у комп’ютері. Ознайомилися з форматом та набором інструкцій симулятора навчальної ЕОМ. Засвоїли формати і способи використання інструкцій звертання до пам’яті та інструкцій арифметичних операцій;
2. Засвоїли призначення регістра ознак процесора;
3. Ознайомилися з потактовим режимом роботи навчального комп’ютера.
4. Засвоїли базовий порядок виконання інструкції навчального комп’ютера та
навчилися досліджувати хід виконання окремих інструкцій