
- •Міністерство освіти і науки україни
- •"Організація та функціонування комп'ютерів"
- •І. Теоретичні відомості
- •1.1. Коротка історія розвитку комп’ютерної техніки
- •1.2. Принципи організації комп’ютера фон-Неймана
- •Іі. Опис архітектури навчального комп’ютера DeComp
- •2.1. Організація навчального комп’ютера – симулятора DeComp
- •2.2. Пульт управління навчального комп’ютера
- •2.5. Закладка “Пристрій підготовки даних”
- •2.5.1. Порядок введення інформації на перфострічку
- •III. Вказівки до виконання лабораторних робіт Лабораторна робота № 1
- •1. Теоретична частина
- •1.1 Загальні поняття про системи числення
- •1.2.1 Двійкова система числення
- •1.3. Переведення чисел з однієї позиційної системи числення до іншої
- •1.3.1. Переведення цілих чисел
- •1.3.2. Переведення правильного дробу
- •1.3.3. Особливості переведення вісімкових і шістнадцяткових чисел до двійкової системи числення і навпаки
- •0000 0000 0000 1010 – Двійковий код 1-ої інструкції
- •0010 0000 0000 1011 - - “ - 2-Ої інструкції
- •0001 0000 0000 1100 - - “ - 3-Ої інструкції
- •0111 1100 0000 0000 - - “ - 4-Ої інструкції
- •Лабораторна робота № 2
- •1. Теоретичні відомості
- •1.2. Інструкції арифметичних операцій:
- •1.3. Призначення Регістру Ознак
- •1.4. Дослідження виконання інструкцій навчального комп’ютера
- •2. Порядок виконання роботи
- •Вимоги до звіту
- •Лабораторна робота № 3
- •1. Теоретичні відомості
- •1.2. Організація програмних циклів
- •1.3. Особливості виконання операцій зсуву
- •2. Порядок виконання роботи:
- •3. Вимоги до звіту.
- •Лабораторна робота № 4
- •1. Теоретичні відомості
- •1.1. Загальні відомості про логічні функції
- •1.2. Опис логічних інструкцій навчального комп’ютера
- •1.3. Подання від’ємних чисел у комп’ютерах
- •1.3.1. Прямий код
- •1.3.2. Обернений код
- •1.3.3. Доповняльний код
- •1.3.4. Модифіковані коди
- •2. Порядок виконання роботи:
- •3. Вимоги до звіту
- •Лабораторна робота № 5
- •1. Теоретична частина.
- •1.1. Додавання і віднімання двійкових чисел з фіксованою комою
- •1.2. Додавання двійкових чисел у модифікованому доповняльному коді
- •1.3. Додавання двійкових чисел у модифікованому оберненому коді
- •1.4. Переповнення розрядної сітки при додаванні у модифікованих машинних кодах
- •1.5. Множення двійкових чисел без знаку
- •2. Порядок роботи:
- •3. Вимоги до звіту
- •Лабораторна робота № 6
- •1. Теоретична частина
- •1.1. Подання чисел з рухомою комою
- •1.2. Правила додавання (віднімання) двійкових чисел з рухомою комою
- •2. Порядок роботи:
- •3. Вимоги до звіту.
- •Лабораторна робота № 7
- •1. Теоретична частина
- •1.1. Ділення двійкових чисел без знаку
- •1.1.1. Ділення з відновленням залишку
- •1.1.2. Ділення без відновлення залишку
- •1.2. Множення двійкових чисел із знаком
- •1.2.1 Множення чисел у форматі з фіксованою комою
- •1.3. Ділення двійкових чисел у форматі з фіксованою комою.
- •2. Порядок роботи
- •3. Вимоги до звіту.
- •Література.
- •Додаток
0000 0000 0000 1010 – Двійковий код 1-ої інструкції
0010 0000 0000 1011 - - “ - 2-Ої інструкції
0001 0000 0000 1100 - - “ - 3-Ої інструкції
0111 1100 0000 0000 - - “ - 4-Ої інструкції
Відповідно, двійковий код першої інструкції необхідно занести до комірки з адресою 0 (0000 0000 0000), другу – у комірку з адресою1 (0000 0000 0001), третю – у комірку з адресою2 (0000 0000 0010), а четверту – у комірку з адресою3 (0000 0000 0011).
Після того, як програма розміщена у пам’яті навчального комп’ютера і у 10-ту (код адреси у двійковій формі - 0000 0000 1010) та у 11-ту (код адреси - 0000 0000 1011) комірки будуть занесені задані числа, необхідно у Лічильнику Адреси Інструкції за допомогою набірного поля встановити адресу першої інструкції, тобто код адреси - 0000 0000 0000, тобто показати процесору звідки починати виконання програми.
6. Виконати програму у автоматичному режимі і перевірити результат у 12-й комірці, прочитавши значення 12-ї комірки пам’яті.
7. Онулити 12-ту комірку, знову встановити у ЛАІ адресу першої інструкції – адресу 0 і дослідити цю програму, виконавши її у покроковому режимі. Після виконання кожної інструкції записати у подану нижче таблицю вміст усіх регістрів процесора.
-
РА
РД
А
РІ
ЛАІ
РО
1-й крок
2-й крок
. . .
N –й крок
Проаналізувати процес змін у регістрах процесора на кожному кроці виконання програми.
8. Оформити та захистити звіт з лабораторної роботи. Під час захисту звіту бути готовому дати усну відповідь на будь-яке контрольне питання і дати пояснення змінам у регістрах процесора, які відбуваються при виконанні кожного кроку програми.
Загальні вимоги до звітів з виконаних лабораторних робіт подані у додатку.
Лабораторна робота № 2
Тема: Набір інструкцій навчального комп’ютера. Загальний порядок виконання інструкцій.
Мета: 1. Засвоїти порядок виконання програм у комп’ютері. Ознайомитися з форматом та набором інструкцій симулятора навчальної ЕОМ. Засвоїти формати і способи використання інструкцій звертання до пам’яті та інструкцій арифметичних операцій;
2. Засвоїти призначення регістра ознак процесора;
3. Ознайомитися з потактовим режимом роботи навчального комп’ютера.
4. Засвоїти базовий порядок виконання інструкції навчального комп’ютера та
навчитися досліджувати хід виконання окремих інструкцій.
1. Теоретичні відомості
Звернімося до малюнку 2.3, на якому зображена таблиця “Набір інструкцій навчального комп’ютера DeComp”. Усі інструкції у навчальному комп’ютері можна поділяти за такими напрямками:
За форматом коду інструкції;
За призначенням.
Нагадаємо, що за форматом коду інструкції є адресні та безадресні (див. розділ ІІ “Опис архітектури навчального комп’ютера DeComp”). Безадресні інструкції взагалі не використовують будь-які операнди, як, наприклад, інструкція HALT або інструкції зсувів. У таких інструкціях однозначно відомо, звідки брати операнди для операції, наприклад:
- інструкція NOT однозначно працює з акумулятором (інвертує його вміст);
- так само роблять усі інструкції зсувів (LSL, ASR, ROR та інші);
- а от інструкції INPUT та OUTPUT працюють не лише з акумулятором, але й з портами вводу (INPUT) та виводу (OUTPUT).
У свою чергу, адресні інструкції для виконання своєї операції потребують операнди, в якості яких може бути вміст будь-якої з 4096 комірок пам’яті симулятора. Отже, окрім коду операції, який займає найстарші 4 розряди машинного коду інструкції (від 15-го до 12-го ), решту розрядів займає 12-розрядна адреса комірки пам’яті, значення вмісту якої стане операндом і буде оброблятись у даній інструкції.
Усі інструкції навчального комп’ютера за призначенням можна розділити на такі групи:
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) LOADADR - завантажити(від англ. Load - завантажувати).
Дивимося на рис. 2.3: машинний код цієї інстркції – 0000 aaaa aaaa aaaa; виконання – (ADDR) Акумулятор.
Ця інструкція здійснює читання 16-розрядного числа з комірки пам’яті, на яку вказує поле адреси ADR, і розміщує його у акумуляторі. Перші найстарші 4 розряди (старша тетрада) містять код операції “завантаження” з пам’яті – 0000, а наступні 12 розрядів – адресу комірки, з якої відбуватиметься читання. Наприклад, для того, щоб прочитати число з 15-ї або 2041-ої комірки пам’яті і записати його до акумулятора, необхідно використати :
-
Мнемонічний запис
Машинний код
LOAD 15
0000 0000 0000 1111
LOAD 2041
0000 1111 1111 1001
2) STORE ADR - зберегти (від англ. Store - зберігати)
Машинний код – 0001 aaaa aaaa aaaa; виконання – Акумулятор (ADDR)).
Ця інструкція здійснює протилежну до інструкції LOAD дію, тобто 16-розрядне значення вмісту акумулятора записує у комірку пам’яті, на яку вказує поле адреси ADR. Код операції інструкції “збереження” до пам’яті – 0001, а наступні 12 розрядів – адреса комірки пам’яті. Наприклад, щоб записати значення вмісту акумулятора до 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-ї комірки. Відзначимо, що інструкція читання (завантаження) LOAD не знищує числа у 28-ій комірці. Після виконання у цій програмі інструкції запису (збереження)STORE, код числа з 28-ої комірки пам’яті буде скопійований до 56-ої комірки, а у акумуляторі залишиться те саме 16-розрядне число з 28-ї комірки.