Виконання:
На лабораторні роботі №1 я зробив програму, яка була призначена для додавання двох чисел (числа 22 та 33). Програма має такий вигляд:
Мнемонічний код інструкції |
Машинний код |
Дія, яку виконує інструкція |
LOAD 10 |
0000 0000 0000 1010 |
завантажити (прочитати) значення числа з 10-ї комірки пам’яті до акумулятора; |
ADD 11 |
0010 0000 0000 1011 |
додати до числа в акумуляторі значення числа з 11-ї комірки пам’яті і результат зберегти в акумуляторі; |
STORE 12 |
0001 0000 0000 1100 |
зберегти (записати) значення числа з акумулятора до 12-ї комірки пам’яті; |
HALT |
0111 1100 0000 0000 |
зупинити роботу процесора. |
Для виконання дослідження програми в по тактовому режимі, я заніс до ЛАІ адресу першої інструкції, тобто 0, і, обравши по тактовий режим роботи, приступив до дослідження. Кожен такт виконується з натиском кнопки ПУСК. Результати дослідження я заніс до таблиці.
Дослідження програми у потактовому режимі
№ |
Код, що обробляється |
Мнемонічний запис |
Коментар до кожної інструкції |
1 |
0000 0000 0000 |
ЛАІ→РА |
Вибір адреси першої інструкції та її запис до Регістру Адреси |
2 |
0000 0000 0000 1010 |
Пам(РА)→РД |
Зчитування та занесення вмісту комірки (інструкції) до Регістру Даних |
3 |
0000 0000 0000 1010 |
РД→РІ |
Декодування інструкції до Регістру Інструкцій |
4 |
0000 0000 1010 |
РІ→РА |
Початок виконання інструкції. Регістр Інструкцій вказує до якої комірки треба звернутись |
5 |
0000 0000 0001 0110 |
Пам(РА)→РД |
Зчитування та занесення вмісту комірки (число) до Регістру Даних |
6 |
0000 0000 0001 0110 |
РД→А |
Зчитування та занесення числа до Акумулятор |
7 |
0000 0000 0001 |
ЛАІ→ЛАІ+1 |
Вибір адреси наступної (другої) інструкції |
8 |
0000 0000 0001 |
ЛАІ→РА |
Запис адреси другої інструкції до Регістру Адреси
|
9 |
0010 0000 0000 1011 |
Пам(РА)→РД |
Вибір коду інструкції ADD 11 і його запис до Регістру Даних |
10 |
0010 0000 0000 1011 |
РД→РІ |
Декодування інструкції у Регістру Інструкцій |
11 |
0000 0000 1011 |
РІ→РА |
Вибір адреси другого числа |
12 |
0000 0000 0010 0001 |
Пам(РА)→РД |
Запис двійкового значення числа до Регістру Даних |
13 |
0000 0000 0011 0111 |
А+РД→А |
Виконання арифметичної дії та запис результату до Акумулятор |
14 |
000 |
А→РО |
Встановлення прапорців Регістру Ознак |
15 |
0000 0000 0010 |
ЛАІ→ЛАІ+1 |
Вибір наступної (третьої) інструкції |
16 |
0000 0000 0010 |
ЛАІ→РА |
Запис адреси третьої інструкції до Регістру Адреси |
17 |
0001 0000 0000 1100 |
Пам(РА)→РД |
Вибір коду інструкції STORE 12 і його запис до Регістру Даних |
18 |
0001 0000 0000 1100 |
РД→РІ |
Декодування інструкції до РІ |
19 |
0000 0000 1100 |
РІ→РА |
Вибір адреси комірки, до якої буде записано результат арифметичної дії |
20 |
0000 0000 0011 0111 |
А→РД |
Запис результату додавання з Акумулятора до Регістру Даних |
21 |
0000 0000 1100 |
РД→Пам(РА) |
Зчитування результату додавання та його запис до конкретної комірки |
22 |
0000 0000 0011 |
ЛАІ→ЛАІ+1 |
Вибір наступної (четвертої) інструкції |
23 |
0000 0000 0011 |
ЛАІ→РА |
Запис адреси четвертої інструкції до Регістру Адреси |
24 |
0111 1100 0000 0000 |
Пам(РА)→РД |
Зчитування вмісту комірки (інструкція) і його запис до Регістру Даних |
25 |
0111 1100 0000 0000 |
РД→РІ |
Декодування інструкції до Регістру Інструкцій |
Ввести у симулятор та виконати дослідження у покроковому режимі програми, яка відніматиме два числа А і В для значень, коли А = В, А > В і А < В, вибравши довільні значення чисел А і В. Виписати результати виконання дослідження і значення прапорців ознак у таблицю, взірець якої поданий у роботі № 1. Поясніть отримані результати.