Міністерство освіти і науки, молоді та спорту України
Національний університет „Львівська політехніка”
Кафедра СКС
Звіт
з лабораторної роботи №1
з дисципліни: “Організація та функціонування комп’ютерів”
на тему: “Ознайомлення з організацією навчального
комп’ютера – симулятора DeComp”
Мета роботи
Вивчити організацію навчального комп’ютера – симулятора DeComp, призначення окремих блоків і можливості їх використання;
Засвоїти порядок уведення інформації в регістри та пам’ять симулятора навчального комп’ютера, навчитися вводити і запускати найпростішу програму;
Вивчити теоретичні основи побудови систем числення, які використовуються у комп’ютерах;
Засвоїти порядок використання двійкової системи числення.
Теоретичні відомості
Система числення (СЧ) - це сукупність прийомів та правил для зображення чисел за допомогою цифрових символів (цифр), що мають визначені кількісні значення (числовий еквівалент). В довільній СЧ запис числа називається кодом. Окрему позицію запису числа називають розрядом, а номер позиції n – номером розряду. Кількість розрядів запису числа називається розрядністю числа.
Позиційна СЧ - це така система, в якій значення символу (числовий еквівалент) залежить від його положення в записі числа. Люба позиційна СЧ характеризується основою (впорядкована послідовність кінцевого набору знаків або символів, які використовуються для зображення числа у данній систем, у якій значення кожного символу залежить від його позиції (розряду) у зображенні числа.)
Однорідна позиційна система числення - це така позиційна система числення, в якій є одна основа d, а вага i-го розряду дорівнює p i.
Кожне число у позиційній системі числення з основою d може бути записане у вигляді розгорнутої або, як її ще називають, повної форми :
(1)
де: Ad – довільне число у системі числення з основою d;
– коефіцієнти ряду або цифри системи числення;
i = (n, n-1, n-2, …, 1, 0, -1, …, -m+1, -m) – номер розряду цілої (n) або дробової (-m) частини числа.
Для подання чисел в універсальних ЕОМ застосовували й застосовують двійкову, трійкову, вісімкову і шістнадцяткову СЧ, а для обробки економічної інформації – двійково-десяткову.
З точки зору технічної реалізації найліпшою є система з основою 2 або двійкова, тому що двохпозиційні елементи різної фізичної природи легко реалізуються. Крім того, у процесах з двома стійкими станами різниця між цими станами має якісний, а не кількісний характер, що забезпечує надійну реалізацію двійкових цифр. Таким чином, простота арифметичних і логічних дій, мінімум обладнання, що використовується для подання чисел та найбільш зручні умови реалізації визначили застосування двійкових систем числення практично в усіх відомих комп’ютерах і таких, що проектуються.
Двійкова система числення у комп’ютерах є основною, у якій здійснюються арифметичні і логічні перетворення інформації у пристроях комп’ютера. Вона має тільки дві цифри: 0 і 1, а всяке двійкове число зображується у вигляді комбінації нулів і одиниць. Кожний розряд числа у двійковій системі числення ліворуч від коми подається двійкою у відповідній додатний степені, а праворуч від коми – двійкою у від’ємній степені.
До недоліків двійкової системи числення можна віднести:
Значно більша, порівняно з СЧ, кількість розрядів, які необхідні для подання однакових за абсолютною величиною чисел;
Необхідність переведення вхідних даних з десяткової системи до двійкової і вихідних – з двійкової до десяткової.
Вісімкова СЧ має основу d = 8 i можливі значення розрядів αi = 0, 1, 2, 3, 4, 5, 6, 7. Число вісім, яке дорівнює основі СЧ, записується двома цифрами у вигляді 10. Любе вісімкове число може бути зображено за допомогою формули розгорнутого запису (1) десятковим еквівалентом. Запис команд і даних програми у вісімковій системі числення у три рази коротше, ніж у двійковій.
Шістнадцяткова система числення має основу d = 16 і αi = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Для запису чисел у системі числення з основою, більше ніж 10, арабських цифр виявляється недостатньо і доводиться додатково вводити символи, що однозначно подають цифри від 10 до 15. У даній системі числення застосовують великі латинські (англійські) символи для позначення цифр від 10 до 15.
Переведення чисел з однієї системи числення до іншої може бути виконано двома шляхами:
табличний, який базується на співставленні коду одної СЧ коду іншої СЧ, що мають однакові числові еквіваленти. Спосіб громіздкий, потребує великого об'єму пам'яті для зберігання таблиці, однак, може бути застосований для любих СЧ, включаючи також непозиційні СЧ;
розрахунковий, але він може бути застосований тільки для однорідних позиційних СЧ.
Переведення цілого числа з однієї СЧ в іншу : Число послідовно ділять на основу нової СЧ, записаної у початковій СЧ, до отримання частки, що дорівнює нулю. Число у новій СЧ записується як послідовність залишків від ділення, починаючи з останнього залишку.
Переведення правильного дробу з однієї СЧ в іншу : Правильний дріб послідовно множать на основу нової СЧ, записаної в початковій СЧ. У процесі множення приймають участь тільки дробові частини проміжних добутків, тобто їх ціла частина ігнорується, але не відкидається.
Для переведення вісімкових чисел до двійкової СЧ необхідно кожну вісімкову цифру замінити еквівалентною їй двійковою тріадою (для шістнадцяткових чисел – тетрадою).
Для переведення двійкових чисел до вісімкової СЧ необхідно двійкове число розбити на тріади праворуч і ліворуч від коми (для шістнадцяткових чисел – на тетради). Якщо останні ліворуч і праворуч тріади (тетради) будуть неповні, їх потрібно доповнити нулями. Потім кожну двійкову тріаду (тетраду) замінити одною еквівалентною їй вісімковою (шістнадцятковою) цифрою
Хід виконання роботи
2. Дайте відповіді на такі контрольні питання (6 варіант) :
- Які особливості вісімкової системи числення (СЧ) ?
- Вісімкова СЧ за основу має число 8 та можливі значення розрядів від 0 до 7 включно. Число 8 записується у вигляді числа 10. Будь-яке вісімкове число може бути зображено за допомогою формули розгорнутого запису десятковим еквівалентом. Перевага вісімкової СЧ : запис команд і даних програми є втричі коротшим, ніж у двійковій СЧ. Щоб перевести число з вісімкової СЧ в двійкову, потрібно замінити кожну цифру еквівалентною їй двійковою тріадою (наприклад 25418 = 010 101 100 001 = 0101011000012)
3. Запустити програму «Симулятор навчальної ЕОМ DeComp» (файл DeComp.exe) і включити живлення на панелі навчального комп’ютера.
За допомогою набірного поля і кнопок «Занесення з набірного поля», записати до регістрів процесора такі значення двійкових кодів:
До РА – 0101 0101 0101;
До РД – 0011 0011 0011 0011;
До А – 0000 1111 0000 1111;
До РІ – 0000 0000 1111 1111;
До ЛАІ – 1010 1010 1010.
Порядок виконання
Запустив DeComp.exe та включив живлення симулятора навчального комп’ютера (кнопка «Живлення» в правому нижньому куті вікна програми). Далі виконав наступне:
За допомогою відповідних перемикачів у набірне поле ввів 0101 0101 0101, кнопкою «РА» заніс це значення в регістр адреси;
Скинув набірне поле, ввів 0011 0011 0011 0011, кнопкою «РД» заніс його в регістр даних пам’яті;
Скинув набірне поле, ввів 0000 1111 0000 1111, кнопкою «А» заніс його в акумулятор арифметико-логічного пристрою;
Скинув набірне поле, ввів 0000 0000 1111 1111, кнопкою «РІ» заніс його в регістр інструкцій пристрою управління;
Скинув набірне поле, ввів 1010 1010 1010, кнопкою «ЛАІ» заніс його в лічильник адреси інструкції.
4. За допомого набірного поля і кнопок «Операція з пам’яттю» записати до 5-ти сусідніх комірок пам’яті з адресами 20, 12, 22, 23 та 24 числа 16, 17, 18, 19 та 20. Попередньо всі десяткові числа перевести до двійкової системи числення і результати записати у робочий зошит для подання у звіті.
Порядок виконання
Перший етап виконання цього завдання – переведення чисел з двійкової системи в десяткову. За алгоритмом, який описаний в теоретичній частині, я отримав такі результати :
Частка
Остача
Частка
Остача
Частка
Остача
Частка
Остача
16÷2=8
0
17÷2=8
1
18÷2=8
0
19÷2=8
1
8÷2=4
0
8÷2=4
0
9÷2=4
1
9÷2=4
1
4÷2=2
0
4÷2=2
0
4÷2=2
0
4÷2=2
0
2÷2=1
0
2÷2=1
0
2÷2=1
0
2÷2=1
0
1÷2=0
1
1÷2=0
1
1÷2=0
1
1÷2=0
1
1610 = 100002
1710 = 100012
1810 = 100102
1910 = 100112
Частка
Остача
Частка
Остача
Частка
Остача
Частка
Остача
20÷2=10
0
21÷2=10
1
22÷2=11
0
23÷2=11
1
10÷2=5
0
10÷2=5
0
11÷2=5
1
11÷2=5
1
5÷2=2
1
5÷2=2
1
5÷2=2
1
5÷2=2
1
2÷2=1
0
2÷2=1
0
2÷2=1
0
2÷2=1
0
1÷2=0
1
1÷2=0
1
1÷2=0
1
1÷2=0
1
2010 = 101002
2110 = 101012
2210 = 101102
2310 = 101112
Частка
Остача
24÷2=12
0
12÷2=6
0
6÷2=3
0
3÷2=1
1
1÷2=0
1
2410 = 110002
В набірне поле ввів число 10100 і заніс його в регістр адреси пам’яті, ввів число 10001 та заніс його в регістр даних пам’яті;
Кнопкою «Запис» записав число з регістру даних пам’яті за відповідною адресою;
Кнопкою «+1» на пульті управління збільшив значення регістру адреси пам’яті на одиницю;
Такі ж дії повторив з відповідними значеннями, які дані в умові завдання.
5. Записати у пам’ять описану нижче програму, яка додаватиме числа, що знаходяться у 10-й та 11-й комірках пам’яті, а результат запише до 12-ї комірки. Програму розмістити у оперативній пам’яті починаючи з комірки за адресою 0 (нуль). Попередньо у 10-ту та 11-ту комірки занести числа 41 та 9.
Мнемонічний
код інструкції
Дія, яку виконує інструкція
LOAD 10
завантажити (прочитати) значення числа з 10-ї комірки пам’яті до
акумулятора;
ADD 11
додати до числа в акумуляторі значення числа з 11-ї комірки пам’яті і
результат зберегти в акумуляторі;
STORE 12
зберегти (записати) значення числа з акумулятора до 12-ї комірки пам’яті;
HALT
зупинити роботу процесора.
У двійковому поданні дана програма матиме наступний вигляд:
0000 0000 0000 1010 – двійковий код 1-ої інструкції
0010 0000 0000 1011 – двійковий код 2-ої інструкції
0001 0000 0000 1100 – двійковий код 3-ої інструкції
0111 1100 0000 0000 – двійковий код 4-ої інструкції
Порядок виконання
Частка
Остача
Частка
Остача
Частка
Остача
Частка
Остача
41÷2=20
1
10÷2=5
0
11÷2=5
1
9÷2=4
1
5÷2=2
1
5÷2=2
1
20÷2=10
0
4÷2=2
0
2÷2=1
0
2÷2=1
0
10÷2=5
0
2÷2=1
0
1÷2=0
1
1÷2=0
1
5÷2=2
1
1÷2=0
1
1010=10102
1110 = 10112
2÷2=1
0
1÷2=0
1
4110 = 1010012
910 = 10012
У 1010 та 1110 комірку заніс числа 4110 та 910 відповідно. В двійковій системі числення це виглядає так:
Адреса комірки
Значення
0000 0000 10102
0000 0000 0010 10012
0000 0000 10112
0000 0000 0000 10012
Далі перейшов у комірку за адресою 0 (нулі в набірному полі РА Читання). В неї, та наступні три комірки записав наступні інструкції :
Адреса комірки
Інструкції
0000 0000 00002
0000 0000 0000 10102
0000 0000 00012
0010 0000 0000 10112
0000 0000 00102
0001 0000 0000 11002
0000 0000 00112
0111 1100 0000 00002
Так як програма вже розміщена у пам’яті навчального комп’ютера, то я перейшов до наступного кроку – у Лічильнику Адреси Інструкції встановив адресу першої інструкції (код адреси – 0000 0000 0000), яка вказує процесору, з якого місця потрібно починати виконання програми.
6. Виконати програму у автоматичному режимі і перевірити результат у 12-й комірці, прочитавши значення 12-й комірки пам’яті.
Порядок виконання
Запустив програму в автоматичному режимі (зліва від кнопки «Живлення» вибрав «Автоматичний» режим роботи та натиснув кнопку «Пуск». Програма завершила своє виконання. Результат 12-ї комірки пам’яті має наступний вигляд:
Адреса комірки
Значення
0000 0000 11002
0000 0000 0011 00102
1100102 = 5010 (21+24+25=2+16+32=50)
Отже, можна зробити висновок, що обчислення проведені вірно, оскільки програма вивела потрібний результат у потрібну комірку.
7. Онулити 12-ту комірку, знову встановити у ЛАІ адресу першої інструкції – адресу 0 і дослідити цю програму, виконавши її у покроковому режимі. Після виконання кожної інструкції записати у таблицю вміст усіх регістрів процесора.
Порядок виконання
Онулення 12-ї комірки я провів так :
Набірне поле (введення 0000 0000 0000 1100) РАЧитання Скидування набірного поля РД Запис.
У Лічильнику Адреси Інструкції встановив адресу першої інструкції (0000 0000 0000).
Почав досліджувати дану програму в покроковому режимі. В «Режим роботи» вибрав пункт «Покроковий» та натиснув кнопку «Пуск».
Крок
РА
РД
А
РІ
ЛАІ
РО
1
0000 0000 1010
0000 0000 0010 1001
0000 0000 0010 1001
0000 0000 0000 1010
0000 0000 0001
000
2
0000 0000 1011
0000 0000 0000 1001
0000 0000 0011 0010
0010 0000 0000 1011
0000 0000 0010
000
3
0000 0000 1100
0000 0000 0011 0010
0000 0000 0011 0010
0001 0000 0000 1100
0000 0000 0011
000
4
0000 0000 0011
0111 1100 0000 0000
0000 0000 0011 0010
0111 1100 0000 0000
0000 0000 0011
000
Під час виконання програми відбулись такі зміни у регістрах процесора :
1-ий крок (виконання інструкції LOAD 10 (0000 0000 0000 1010)) :
а) звернення до 10-ї комірки пам’яті (РА : 0000 0000 1010);
б) зчитування її вмісту (РД : 0000 0000 0010 1001) – 4110;
в) записування даного значення до акумулятора
(А : 0000 0000 0011 0010).
2-ий крок (виконання інструкції ADD 11 (0010 0000 0000 1011)) :
а) звернення до 11-ї комірки пам’яті (РА : 0000 0000 1011);
б) зчитування вмісту даної комірки (РД : 0000 0000 0000 1001) – 910;
в) до числа в акумуляторі додається значення числа з 11-ї комірки пам’яті та результат зберігається в акумуляторі
(А: 0000 0000 0011 0010);
3-ій крок (виконання інструкції STORE 12 (0001 0000 0000 1100)) :
а) звернення до 12-ї комірки пам’яті (РА : 0000 0000 1100);
б) зберігання в неї даних з акумулятора (РД: 0000 0000 0011 0010) – 5010;
4-ий крок (виконання інструкції HALT (0111 1100 0000 0000)) :
а) звернення до 3-ї комірки пам’яті (РА : 0000 0000 0000 0011;
б) зчитування її вмісту (РД : 0111 1100 0000 0000 (інструкція HALT));
в) записування її до регістру інструкцій;
г) зупинка роботи процесора.
Висновок
На даній лабораторній роботі я ознайомився з симулятором навчального комп’ютера «DeComp». Дослідив його будову, призначення окремих блоків програми та можливості їх застосування. В ході її проведення я засвоїв порядок уведення інформації в регістри та пам’ять DeComp, навчився вводити та запускати найпростішу програму (обчислення суми двох чисел). В цьому мені допомогли теоретичні основи, які були дані для цієї лабораторної роботи (про основи побудови систем числення), які я вивчив і які в майбутньому мені також пригодяться, а також засвоїв порядок використання двійкової системи числення.