Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metod_lab_OFK.doc
Скачиваний:
13
Добавлен:
06.11.2018
Размер:
1.13 Mб
Скачать

Лабораторна робота № 2

Тема: Набір інструкцій навчального комп’ютера. Загальний порядок виконання інструкцій.

Мета: 1. Засвоїти порядок виконання програм у комп’ютері. Ознайомитися з форматом та набором інструкцій симулятора навчальної ЕОМ. Засвоїти формати і способи використання інструкцій звертання до пам’яті та інструкцій арифметичних операцій;

2. Засвоїти призначення регістра ознак процесора;

3. Ознайомитися з потактовим режимом роботи навчального комп’ютера.

4. Засвоїти базовий порядок виконання інструкції навчального комп’ютера та

навчитися досліджувати хід виконання окремих інструкцій.

1. Теоретичні відомості

Звернімося до малюнку 2.3, на якому зображена таблиця “Набір інструкцій навчального комп’ютера DeComp”. Усі інструкції у навчальному комп’ютері можна поділяти за такими напрямками:

  1. За форматом коду інструкції;

  2. За призначенням.

Нагадаємо, що за форматом коду інструкції є адресні та безадресні (див. розділ ІІ “Опис архітектури навчального комп’ютера 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) LOAD ADR - завантажити (від англ. 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-ї комірки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]