ofk 2 (2)

Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра СКС












Звіт
з лабораторної роботи № 2
з дисципліни: “Організація та функціонування комп’ютерів”
на тему: “Набір інструкції навчального комп’ютера. Загальний порядок виконання інструкцій ”











Виконав: ст. гр. КІ-15
Барчук О.Є.
Прийняв: ст. викл.
Кудрявцев О.Т.




Львів-2012
Тема: “Набір інструкцій навчального комп’ютера. Загальний порядок виконання інструкцій”
Мета: 1. Засвоїти порядок виконання програм у комп’ютері. Ознайомитися з форматом та набором інструкцій симулятора навчальної ЕОМ. Засвоїти формати і способи використання інструкцій звертання до пам’яті та інструкцій арифметичних операцій;
2. Засвоїти призначення регістра ознак процесора;
3. Ознайомитися з потактовим режимом роботи навчального комп’ютера.
4. Засвоїти базовий порядок виконання інструкції навчального комп’ютера та
навчитися досліджувати хід виконання окремих інструкцій.

1) LOAD ADR
Ця інструкція здійснює читання 16-розрядного числа з комірки пам’яті, на яку вказує поле адреси ADR, і розміщує його у акумуляторі. Перші найстарші 4 розряди (старша тетрада) містять код операції “завантаження” з пам’яті – 0000, а наступні 12 розрядів – адресу комірки, з якої відбуватиметься читання. Наприклад, для того, щоб прочитати число з 15-ї або 2041-ої комірки пам’яті і записати його до акумулятора, необхідно використати :

Мнемонічний запис
Машинний код

LOAD 15
0000 0000 0000 1111

LOAD 2041
0000 1111 1111 1001


2) STORE ADR
Машинний код – 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-ї комірки.


3) ADD ADR – арифметичне додавання
Машинний код – 0010 aaaa aaaa aaaa; виконання – Акумулятор + (ADDR) ( Акумулятор.
Ця інструкція виконує додавання вмісту акумулятора і числа з комірки пам’яті, на яку вказує адреса ADR, та записує результат назад до акумулятора. Перші 4 розряди машинного коду містять код операції додавання – 0010, а решта 12 розрядів – адресу у пам’яті 2-го операнда, що буде додаватись. Знову звернемо увагу на центральну позицію акумулятора, який постачає одне з двох чисел для додавання та зберігає результат.


4) SUB ADR – віднімання
Машинний код – 0011 aaaa aaaa aaaa; виконання: Акумулятор – (ADDR) ( Акумулятор.
Ця інструкція виконує віднімання від вмісту акумулятора значення вмісту комірки пам’яті з адресою, що вказана у полі ADR, і записує результат назад до акумулятора. Код операції віднімання – 0011, а решту 12 розрядів займає адреса комірки, вміст якої буде відніматися. Інші властивості цієї інструкції співпадають із властивостями інструкції додавання ADD.


Для фіксації цих станів існує регістр ознак у процесорі, який має три тригери: Z, S i C. На панелі навчального комп’ютера він розміщений біля акумулятора.
Прапорець Z (Zero - нуль) встановлюється у 1 (світиться), якщо результат операції дорівнює 0.
Прапорець S (Sign - знак) встановлюється в 1, якщо результат операції – від’ємне число.
Прапорець C (Carry - перенос) встановлюється в 1, коли у результаті арифметичної операції (додавання чи віднімання) виникає перенос із старшого розряду результату або при виконанні операції зсуву вправо чи вліво крайній розряд числа вийшов за межі розрядної сітки.




3. Додавання чисел 4410 (0000 0000 0010 1100)2 і 1010 (0000 0000 0000 1010)2, що розміщені у 10-й та 11-й комірках відповідно; виведення результату у 12-ту комірку


Мнемонічний запис
Код, що обробляється
Пояснення

1
ЛАІ РА
0000 0000 0000
вибір адреси 1-ої інструкції і занесення її до Регістра Адреси

2
РА РД
0000 0000 0000 1010
вибір коду інструкції з РА і занесення його до Регістра Даних

3
РД РІ
0000 0000 0000 1010
декодування інструкції у Регістрі Інструкцій

4
РІ РА
0000 0000 1010
вибір адреси 1-го операнда

5
РА РД
0000 0000 0010 1100
вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних

6
РД А
0000 0000 0010 1100
виконання операції завантаження 1-го операнда

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 0000 1010
вибір коду 2-го операнда з пам’яті і запис його до Регістру Даних

13
А + РД А
0000 0000 0011 0110
виконання операції додавання (2-й операнд – у акумуляторі)

14
ZSC(А) РО
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 0011 0110
запис результату до Регістра Даних

21
РД РА
0000 0000 1100
комірка в Регістрі Адреси, в якій записується результат

22
ЛАІ + 1 ЛАІ
0000 0000 0011
підготовка адреси нової інструкції

23
ЛАІ РА
0000 0000 0011
вибір адреси 4-ої інструкції і занесення її до Регістра Адреси

24
РА РД
0111 1100 0000 0000
вибір коду інструкції з РА і занесення його до Регістра Даних

25
РД РІ
0111 1100 0000 0000
декодування інструкції у Регістрі Інструкцій і зупинка роботи процесора


4. Ввести у симулятор та виконати дослідження у покроковому режимі програми, яка відніматиме два числа А і В для значень, коли А = В, А > В і А < В, вибравши довільні відповідні значення. Виписати результати виконання дослідження і значення прапорців ознак у таблицю, взірець якої поданий у роботі № 1. Поясніть отримані результати.

Програма має такий вигляд у мнемонічних кодах:
Мнемонічний
код інструкції
Дія, яку виконує інструкція

LOAD 10
завантажити (прочитати) значення числа з 10-ї комірки пам’яті до
акумулятора;

SUB 11
від числа в акумуляторі відняти число з 11-ої комірки і зберегти результат до акумулятора;

STORE 12
зберегти (записати) значення числа з акумулятора до 12-ї комірки пам’яті;

HALT
зупинити роботу процесора.




Оскільки числа А і В довільні, то для умови А<В:
А=510 (0000 0000 0000 01012);
В=1210 (0000 0000 0000 11002);
Виконую програму у покроковому режимі:


РА
РД
А
РІ
ЛАІ
РО

1-й крок
0000 0000 1010
0000 0000 0000 0101
0000 0000 0000 0101
0000 0000 0000 1010
0000 0000 0001
000

2-й крок
0000 0000 1011
0000 0000 0000 1100
1111 1111 1111 1001
0011 0000 0000 1011
0000 0000 0010
011

3-й крок
0000 0000 1100
1111 1111 1111 1001
1111 1111 1111 1001
0001 0000 0000 1100
0000 0000 0011
011

4-й крок
0000 0000 0011
0111 1100 0000 0000
1111 1111 1111 1001
0111 1100 0000 0000
0000 0000
·0011
011


У РО стали активними прапорці S i C. S означає що результатом є від’ємне число, а С – крайній розряд числа вийшов за межі сітки. Вираз 1111 1111 1111 1001 з’явився через те, що крайній розряд вийшов за межі сітки і відбувся циклічний зсув вправо через С. Про це свідчать перші 7 одиниць старшого розряду, наступні 9 молодшого розряду – це значення числа -710.
Результат програми – -710

2-га умова: А>В:
А= 1110 (0000 0000 0000 10112);
В= 810 (0000 0000 0000 10002);
Згідно того, що інструкції ті самі, то у ЛАІ встановлюю адресу першої інструкції і виконую програму у покроковому режимі:


РА
РД
А
РІ
ЛАІ
РО

1-й крок
0000 0000 1010
0000 0000 0000 1011
0000 0000 0000 1011
0000 0000 0000 1010
0000 0000 0001
000

2-й крок
0000 0000 1011
0000 0000 0000 1000
0000 0000 0000 0011
0011 0000 0000 1011
0000 0000 0010
000

3-й крок
0000 0000 1100
0000 0000 0000 0011
0000 0000 0000 0011
0001 0000 0000 1100
0000 0000 0011
000

4-й крок
0000 0000 0011
0111 1100 0000 0000
0000 0000 0000 0011
0111 1100 0000 0000
0000 0000 0011
000


У процесі дослідження ніяких змін прапорців РО не спостерігалося. А це означає, що число є з додатнім знаком, входить в межі розрядної сітки і не дорівнює нулю. 0000 0000 0000 00112 означає, що результат завантажений в акумулятор. На це вказують 4 нулі старшого розряду.
Результат програми – 310(0000 0000 0000 00112).

Третя умова: А=В:
А=В = 910 (0000 0000 0000 10012).
Виконання програми:


РА
РД
А
РІ
ЛАІ
РО

1-й крок
0000 0000 1010
0000 0000 0000 1001
0000 0000 0000 1001
0000 0000 0000 1010
0000 0000 0001
000

2-й крок
0000 0000 1011
0000 0000 0000 1001
0000 0000 0000 0000
0011 0000 0000 1011
0000 0000 0010
100

3-й крок
0000 0000 1100
0000 0000 0000 0000
0000 0000 0000 0000
0001 0000 0000 1100
0000 0000 0011
100

4-й крок
0000 0000 0011
0111 1100 0000 0000
0000 0000 0000 0000
0111 1100 0000 0000
0000 0000 0011
100


В РО став активним прапорець Z, а це означає що результат дорівнює нулю.
5. Введення у симулятор та дослідження у потактовому режимі 3-х окремих інструкції – LOAD, STORE i SUB.



· LOAD
Підготовка:
Адреса 110(0000 0000 00012) число 710(0000 0000 0000 01112)
Адреса 010(0000 0000 00002) інструкція LOAD 1(0000 0000 0000 00012)


№ п/п
№ комірки памяті у двійковому коді
Код інструкції (двійковий)
Мнемонічний запис інструкції
Коментар до інструкції

1
0000 0000 0000
0000 0000 0000 0001
LOAD 1
Завантажити значення з комірки 1


Виконання програми в потактовому режимі:


Мнемонічний запис
Код, що обробляється
Пояснення

1
ЛАІ - РА
0000 0000 0000
вибір адреси 1-ої інструкції і занесення її до Регістра Адреси

2
РА - РД
0000 0000 0000 0001
вибір коду інструкції з РА і занесення його до Регістра Даних

3
РД - РІ
0000 0000 0000 0001
декодування інструкції у Регістрі Інструкцій

4
РІ - РА
0000 0000 0001
вибір адреси 1-го операнда

5
РА - РД
0000 0000 0000 0111
вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних

6
РД - А
0000 0000 0000 0111
виконання операції завантаження 1-го операнда




· STORE
Підготовка:
Адреса 610 (0000 0000 011013 EMBED Equation.3 1415) число 810 (0000 0000 0000 10002)
Адреса 010 (0000 0000 00002) інструкція LOAD 6 (0000 0000 0000 011013 EMBED Equation.3 1415)
Адреса 110(0000 0000 000113 EMBED Equation.3 1415) інструкція STORE 11 (0001 0000 0000 101113 EMBED Equation.3 1415)

№ п/п
№ комірки памяті у двійковому коді
Код інструкції (двійковий)
Мнемонічний запис інструкції
Коментар до інструкції

1
0000 0000 0000
0000 0000 0000 0101
LOAD 6
Завантажити значення з комірки 6

2
0000 0000 0001
0001 0000 0000 1011
STORE 11
Зберегти значення у 11-ій комірці



Мнемонічний запис
Код, що обробляється
Пояснення

1
ЛАІ РА
0000 0000 0000
вибір адреси 1-ої інструкції і занесення її до Регістра Адреси

2
РА РД
0000 0000 0000 0110
вибір коду інструкції з РА і занесення його до Регістра Даних

3
РД РІ
0000 0000 0000 0110
декодування інструкції у Регістрі Інструкцій

4
РІ РА
0000 0000 0110
вибір адреси 1-го операнда

5
РА РД
0000 0000 0000 1000
вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних

6
РД А
0000 0000 0000 1000
виконання операції завантаження 1-го операнда

7
ЛАІ + 1 ЛАІ
0000 0000 0001
підготовка адреси нової інструкції

8
ЛАІ РА
0000 0000 0001
вибір адреси 2-ої інструкції і занесення її до Регістра Адреси

9
РА РД
0001 0000 0000 1011
вибір коду інструкції з РА і занесення його до Регістра Даних

10
РД РІ
0001 0000 0000 1011
декодування інструкції у Регістрі Інструкцій

11
РІ РА
0000 0000 1011
вибір адреси 2-го операнда

12
А РД
0000 0000 0000 1000
запис результату до Регістра Даних

13
РД РА
0000 0000 1011
комірка в Регістрі Адреси, в якій записується результат






· SUB
Підготовка:
Адреса 510 число 910
Адреса 610 число 810
Адреса 110 інструкція LOAD 5
Адреса 210 інструкція SUB 6
Адреса 310 інструкція STORE 10
Адреса 410 інструкція HALT


№ п/п
№ комірки памяті у двійковому коді
Код інструкції (двійковий)
Мнемонічний запис інструкції
Коментар до інструкції

1
0000 0000 0000
0000 0000 0000 0101
LOAD 5
Завантажити значення 1

2
0000 0000 0010
0011 0000 0000 0110
SUB 6
Відняти від числа в акумуляторі число з 2-ої комірки

3
0000 0000 0000 0011
0001 0000 0000 1010
STORE 10
Зберегти значення в 12-ій комірці

4
0000 0000 0000 0100
0111 1100 0000 0000
HALT
Зупинка процесора



Мнемонічний запис
Код, що обробляється
Пояснення

1
ЛАІ РА
0000 0000 0001
вибір адреси 1-ої інструкції і занесення її до Регістра Адреси

2
РА РД
0000 0000 0000 0101
вибір коду інструкції з РА і занесення його до Регістра Даних

3
РД РІ
0000 0000 0000 0101
декодування інструкції у Регістрі Інструкцій

4
РІ РА
0000 0000 0101
вибір адреси 1-го операнда

5
РА РД
0000 0000 0000 1001
вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних

6
РД А
0000 0000 0000 1001
виконання операції завантаження 1-го операнда

7
ЛАІ + 1 ЛАІ
0000 0000 0010
підготовка адреси нової інструкції

8
ЛАІ РА
0000 0000 0010
вибір адреси 2-ої інструкції і занесення її до Регістра Адреси

9
РА РД
0011 0000 0000 0110
вибір коду інструкції з РА і занесення його до Регістра Даних

10
РД РІ
0011 0000 0000 0110
декодування інструкції у Регістрі Інструкцій

11
РІ РА
0000 0000 0110
вибір адреси 2-го операнда

12
РА РД
0000 0000 0000 1000
вибір коду 2-го операнда з пам’яті і запис його до Регістру Даних

13
А + РД А
0000 0000 0000 0001
виконання операції віднімання (2-й операнд – у акумуляторі)

14
ZSC(А) РО
000
встановлення прапорців регістру ознак

15
ЛАІ + 1 ЛАІ
0000 0000 0010
підготовка адреси нової інструкції

16
ЛАІ РА
0000 0000 0010
вибір адреси 3-ої інструкції і занесення її до Регістра Адреси

17
РА РД
0001 0000 0000 1010
вибір коду інструкції з РА і занесення його до Регістра Даних

18
РД РІ
0001 0000 0000 1010
декодування інструкції у Регістрі Інструкцій

19
РІ РА
0000 0000 1010
вибір адреси 3-го операнда

20
А РД
0000 0000 0000 0001
запис результату до Регістра Даних

21
РД РА
0000 0000 1010
комірка в Регістрі Адреси, в якій записується результат

22
ЛАІ + 1 ЛАІ
0000 0000 0100
підготовка адреси нової інструкції

23
ЛАІ РА
0000 0000 0100
вибір адреси 4-ої інструкції і занесення її до Регістра Адреси

24
РА РД
0111 1100 0000 0000
вибір коду інструкції з РА і занесення його до Регістра Даних

25
РД РІ
0111 1100 0000 0000
декодування інструкції у Регістрі Інструкцій і зупинка роботи процесора



Висновок
На даній лабораторній роботі я засвоїв порядок виконання програм у комп’ютері та ознайомився з форматом та набором інструкцій стимулятора навчальної DeComp. Освоїв призначення регістра ознак процесора та дослідив базовий порядок виконання інструкцій та хід окремих інструкцій






Приложенные файлы

  • doc 19143663
    Размер файла: 242 kB Загрузок: 0

Добавить комментарий