Хід роботи:
2.Призначення прапорців Регістру Ознак:
Прапорець Z (Zero - нуль) встановлюється у 1 (світиться), якщо результат операції дорівнює 0. Зрозуміло, що для команди ADD ця ознака встановиться лише у випадку, якщо до 0 додати 0, або якщо додаються два однакових числа з протилежними знаками.
Прапорець S (Sign - знак) встановлюється в 1, якщо результат операції – від’ємне число. Знову ж таки, інструкція ADD не може дати від’ємного результату за винятком чисел у доповняльному коді, яких ми поки-що не розглядаємо. Зрозуміло, якщо віднімати від меншого числа більше інструкцією SUB, отримаємо ознаку від’ємного результату S.
Прапорець C (Carry - перенос) встановлюється в 1, коли у результаті арифметичної операції (додавання чи віднімання) виникає перенос із старшого розряду результату або при виконанні операції зсуву вправо чи вліво крайній розряд числа вийшов за межі розрядної сітки
3. Підготовка до виконання:
Умова задачі з лабораторної роботи №1:
Записати у пам’ять програму, яка додаватиме числа, що знаходяться у 10-й та 11-й комірках пам’яті, а результат записуватиме до 12-ї комірки. Програму розмістити у оперативній пам’яті, починаючи з комірки за адресою 0. Попередньо у 10-ту та 11-ту комірки занести числа, відповідно до варіанту (варіант 15 – числа 37 і 21).
Записую програму до пам’яті комп’ютера. Переходжу у потактовий режим і виконую дослідження. Слід зазначити, що у по тактовому режимі під час здійснення аналізу на панелі процесора синім кольором позначатиметься джерело інформації, а білим – місце призначення.
№ п/п |
Код, що обробляється
|
Мнемонічний запис інструкції |
Коментар до кожної інструкції |
|
1 |
0000 0000 0000 |
ЛАІ→РА |
вибір адреси 1-ої інструкції і занесення її до Регістра Адреси |
|
2 |
0000 0000 0000 1010 |
Пам.РА→РД |
вибір коду інструкції з РА і занесення його до Регістра Даних |
|
3 |
0000 0000 0000 1010 |
РД→РІ |
декодування інструкції у Регістрі Інструкцій |
|
4 |
0000 0000 1010 |
РІ→РА |
вибір адреси 1-го операнда |
|
5 |
0000 0000 0010 1001 |
Пам.РА→РД |
вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних |
|
6 |
0000 0000 0010 1001 |
РД→А |
Запис першого операнда до Акумулятора |
|
7 |
0000 0000 0001 |
ЛАІ→ЛАІ |
Вибір адреси 2- інструкції |
|
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 0011 1110 |
РД+А→А |
Виконується додавання у акумуляторі сума двох операндів |
|
14 |
0 0 0 |
А→РО |
встановлення прапорців регістру ознак |
|
15 |
0000 0000 0010 |
ЛАІ→ЛАІ |
Вибір адреси 3-ї інструкції |
|
16 |
0000 0000 0010 |
ЛАІ→РА |
Занесення адреси 3-ї інструкції до Регістру Адреси Пам’яті |
|
17 |
0001 0000 0000 1100 |
Пам.РА→РД |
вибір коду інструкції з РА і занесення його до Регістра Даних |
|
18 |
0001 0000 0000 1100 |
РД→РІ |
декодування інструкції у Регістрі Інструкцій |
|
19 |
0000 0000 1100 |
РІ→РА |
Вибір адреси запису результату додаваня |
|
20 |
0000 0000 0011 1110 |
А→РД |
Запис вмісту акумулятора до Регістру Даних |
|
21 |
0000 0000 0011 1110 |
РД→Пам.РА |
Запис результату додавання до пам’яті |
|
22 |
0000 00000 0011 |
ЛАІ→ЛАІ |
Визначення адреси 4-ї інструкці |
|
23 |
0000 0000 0011 |
ЛАІ→РА |
Занесення адреси 4-ї інструкції до Регістру Адреси Пам’яті |
|
24 |
0111 1100 0000 0000 |
Пам.РА→РД |
вибір коду інструкції з РА і занесення його до Регістра Даних |
|
25 |
0111 1100 0000 0000 |
РД→РІ |
декодування інструкції у Регістрі Інструкцій (завершення виконання програми) |
|
4. Підготовка до виконання:
4=0100; 5=0101; 6=0110.
Записую у пам'ять програму, що відніматиме два числа A i B у випадках, коли A=B, A>B i A<B. Переходжу у покроковий режим і починаю дослідження.
A-B, де A=B=5
№ |
РА |
РД |
А |
РІ |
ЛАІ |
РО ( Z S C) |
1 |
0000 0000 1010 |
0000 0000 0000 0101 |
0000 0000 0000 0101 |
0000 0000 0000 1010 |
0000 0000 0001 |
0 0 0 |
2 |
0000 0000 1011 |
0000 0000 0000 0101 |
0000 0000 0000 0000 |
0011 0000 0000 1011 |
0000 0000 0010 |
1 0 0 |
3 |
0000 0000 1100 |
0000 0000 0000 0000 |
0000 0000 0000 0000 |
0001 0000 0000 1100 |
0000 0000 0011 |
1 0 0 |
4 |
0000 0000 0011 |
0111 1100 0000 0000 |
0000 0000 0000 0000 |
0111 1100 0000 0000 |
0000 0000 0011 |
1 0 0 |
A-B, де A=6, B=4
№ |
РА |
РД |
А |
РІ |
ЛАІ |
РО ( Z S C) |
1 |
0000 0000 1010 |
0000 0000 0000 0110 |
0000 0000 0000 0110 |
0000 0000 0000 1010 |
0000 0000 0001 |
0 0 0 |
2 |
0000 0000 1011 |
0000 0000 0000 0100 |
0000 0000 0000 0010 |
0011 0000 0000 1011 |
0000 0000 0010 |
0 0 0 |
3 |
0000 0000 1100 |
0000 0000 0000 0100 |
0000 0000 0000 0110 |
0001 0000 0000 1100 |
0000 0000 0011 |
0 0 0 |
4 |
0000 0000 0011 |
0111 1100 0000 0000 |
0000 0000 0000 0110 |
0111 1100 0000 0000 |
0000 0000 0011 |
0 0 0 |
A-B, де A=4,B=6
№ |
РА |
РД |
А |
РІ |
ЛАІ |
РО ( Z S C) |
1 |
0000 0000 1010 |
0000 0000 0000 0100 |
0000 0000 0000 0100 |
0000 0000 0000 1010 |
0000 0000 0001 |
0 0 0 |
2 |
0000 0000 1011 |
0000 0000 0000 0110 |
1111 1111 1111 1110 |
0011 0000 0000 1011 |
0000 0000 0010 |
0 1 1 |
3 |
0000 0000 1100 |
0000 0000 0000 0110 |
0000 0000 0000 0100 |
0001 0000 0000 1100 |
0000 0000 0011 |
0 0 0 |
4 |
0000 0000 0011 |
0111 1100 0000 0000 |
0000 0000 0000 0100 |
0111 1100 0000 0000 |
0000 0000 0011 |
0 0 0 |
У Випадку 1 ми спостерігаємо виникнення нуля при відніманні, що показує нам прапорець “Z”.
У Випадку 2 при відніманні виходить додатнє число, отже прапорці є неактивовані, тобто регістр ознак не змінився.
У Випадку 3 при відніманні виходить від’ємне число. У регістрі ознак підсвічуються два прапорці – “C” i “S”. S – повідомляє нам, що результат є від’ємний, а C – ознака того, що при відніманні виникло переповнення розрядної сітки процесора. Це пояснюється тим, що спочатку процесор переводить від’ємник у доповняльний код, а дію віднімання замінює додаванням, і до числа 4 додає 6 у доповняльному коді і у результаті ми отримуємо доповняльний код двійки, тобто -2.
5. Підготовка до виконання:
Інструкція LOAD ( Машинний код: 0000 aaaa aaaa aaaa) зчитує дані з комірки пам’яті з адреси aaaa aaaa aaaa і записує їх до акумулятора. Вона обробляє лише один операнд, що повинен бути заздалегідь підготовлений. Проводимо підготовку до дослідження.
Записую у 0 комірку інструкцію LOAD 01 (0000 0000 0000 0001), а у 1 – число 7( 0000 0000 0000 0111). У Лічильнику Адрес Інструкцій вибираю початок програми з 0 комірки, переключаюсь на потактовий режим роботи і виконую дослідження.
№ |
Код, що обробляється |
Мнемонічний запис інструкції |
Коментар до кожної інструкції |
1 |
0000 0000 0000 |
ЛАІ→РА |
вибір адреси інструкції і занесення її до Регістра Адреси |
2 |
0000 0000 0000 0001 |
Пам.РА→РД |
вибір коду інструкції з РА і занесення його до Регістра Даних |
3 |
0000 0000 0000 0001 |
РД→РІ |
декодування інструкції у Регістрі Інструкцій |
4 |
0000 0000 0001 |
РІ→РА |
вибір адреси операнда |
5 |
0000 0000 0000 0111 |
Пам.РА→РД |
вибір коду операнда з пам’яті і запис його до Регістру Даних |
6 |
0000 0000 0000 0111 |
РД→А |
запис вмісту РД до А |
7 |
0000 0000 0001 |
ЛАІ→ЛАІ |
визначення адреси наступної інструкції |
Інструкція STORE ( Машинний код: 0001 аааа аааа аааа) записує з акумулятора число в комірку з адресою аааа аааа аааа. Інструкція обробляє 1 операнд, що повинен бути підготовлений заздалегідь. Проводимо підготовку до дослідження.
Записую у 0 комірку інструкцію STORE 01 (0001 0000 0000 0001), а в аккумулятор число 7( 0000 0000 0000 0111). У Лічильнику Адрес Інструкцій вибираю початок програми з 0 комірки, переключаюсь на потактовий режим роботи і виконую дослідження.
№ |
Код, що обробляється |
Мнемонічний запис інструкції |
Коментар до кожної інструкції |
1 |
0000 0000 0000 |
ЛАІ→РА |
вибір адреси інструкції і занесення її до Регістра Адреси |
2 |
0001 0000 0000 0001 |
Пам.РА→РД |
вибір коду інструкції з РА і занесення його до Регістра Даних |
3 |
0001 0000 0000 0001 |
РД→РІ |
декодування інструкції у Регістрі Інструкцій |
4 |
0000 0000 0001 |
РІ→РА |
вибір адреси запису операнда |
5 |
0000 0000 0000 0111 |
А→РД |
Запис значення Акумулятора до Регістру Даних |
6 |
0000 0000 0000 0111 |
РД→Пам.РА |
запис вмісту Регістру Даних до Пам’яті |
7 |
0000 0000 0001 |
ЛАІ→ЛАІ |
визначення адреси наступної інструкції |
Інструкція SUB ( Машинний код: 0011 аааа аааа аааа ) віднімає два числа (від того, що міститься в акумуляторі віднімається число, що знаходиться у комірці з адресою аааа аааа аааа). Дана інструкціє обробляє 2 операнда, які повинні бути заздалегідь підготовлені. Проводимо підготовку до дослідження.
Записую у 0 комірку інструкцію SUB 01( 0011 0000 0000 0001), у 1 комірку – число 5( 0000 0000 0000 0101), а у акумулятор – число 8( 0000 0000 0000 1000). У Лічильнику Адрес Інструкцій вибираю початок програми з 0 комірки, переключаюсь на потактовий режим роботи і виконую дослідження.
№ |
Код, що обробляється |
Мнемонічний запис інструкції |
Коментар до кожної інструкції |
1 |
0000 0000 0000 |
ЛАІ→РА |
вибір адреси 1-ої інструкції і занесення її до Регістра Адреси |
2 |
0001 0000 0000 0001 |
Пам.РА→РД |
вибір коду інструкції з РА і занесення його до Регістра Даних |
3 |
0001 0000 0000 0001 |
РД→РІ |
декодування інструкції у Регістрі Інструкцій |
4 |
0000 0000 0001 |
РІ→РА |
вибір адреси 1-го операнда (2-й операнд – у акумуляторі) |
5 |
0000 0000 0000 0101 |
Пам.РА→РД |
вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних |
6 |
0000 0000 0000 0011 |
РД+А→А |
виконання операції віднімання(додавання з перетворенням коду від’ємника з прямого на доповняльний) |
7 |
0 0 0 |
А→РО |
встановлення прапорців регістру ознак |
8 |
0000 0000 0001 |
ЛАІ→ЛАІ |
підготовка адреси нової інструкції |
Висновок: Завдяки виконанню цієї лабораторної роботи ми засвоїли порядок виконання програм у комп’ютері, ознайомилися з форматом та набором інструкцій симулятора навчальної ЕОМ. Також ми засвоїли формати і способи використання інструкцій звертання до пам’яті та інструкцій арифметичних операцій,засвоїли призначення регістра ознак процесора. Так самоми рзнайомилися з потактовим режимом роботи навчального комп’ютер і засвоїли базовий порядок виконання інструкції навчального комп’ютера та навчилися досліджувати хід виконання окремих інструкцій.
