Лабораторна робота 3

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних технологій, автоматики та метрології
Факультет:
Інститут комп’ютерних технологій, автоматики та метрології
Кафедра:
СКС

Інформація про роботу

Рік:
2016
Тип роботи:
Звіт до лабораторної роботи
Предмет:
ООФК
Група:
КІ 13
Варіант:
2 6 РКФ

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет «Львівська політехніка» Кафедра СКС / ЗВІТ з лабораторної роботи № 3 з дисципліни «Організація та функціонування комп’ютерів» на тему: «Дослідження інструкцій переходів і зсувів. Організація циклів.» Тема: «Дослідження інструкцій переходів і зсувів. Організація циклів.» Мета: 1. Засвоїти використання основних інструкцій зсуву і переходів у системі команд навчального комп’ютера DeComp. 2. Навчитись організовувати цикли необхідної структури і використовувати їх у програмах. Теоретична частина Головне призначення інструкції переходів – зміна звичайного порядку виконання інструкцій. У всіх інструкціях, за винятком інструкцій переходів, на останньому кроці адреса наступної інструкції визначається шляхом додавання 1 до ЛАІ. У інструкціях переходів 12 розрядів адресної частини містять нову адресу наступної інструкції. В результаті наступною після інструкції переходу буде не та інструкція, яка знаходиться у пам’яті зразу після інструкції переходу, а інструкція, яка може знаходитись у будь-якій іншій комірці пам’яті, на яку вкаже адреса у інструкції переходу. Інструкція безумовного переходу JMP ADR має машинний код 1110 aaaa aaaa aaaa. Відповідно, код операції дорівнює 1110, а решта розрядів – адресна частина. Мікропрограма виконання інструкції JMP має наступний вигляд: ЛАІ ( РА; РА ( РД; РД ( РІ, декодування; РІ ( ЛАІ – перехід на вказану адресу відбувається без будь-яких попередніх умов. Як видно, інструкція безумовного переходу JMP просто записує до ЛАІ значення своєї адресної частини і програма буде змушена виконати інструкцію, що записана у комірці пам’яті за цією адресою. Інструкція JMP фактично є реалізацією оператора GOTO у мовах програмування Pascal, Basic та ін. Призначення інструкцій умовного переходу (JNZ, JP тощо) дещо інше: у залежності від виконання чи не виконання умови, зазначеної у алгоритмі програми, перехід або буде здійснюватись, або не буде. Контроль виконання умови здійснює Регістр Ознак шляхом встановлення чи не встановлення відповідного тригера. Для організації циклу засобами навчального комп’ютера DeComp в одній з комірок пам’яті необхідно розмістити лічильник циклів. Лічильник циклів це число, яке може мати значення N (якесь число) або 0 (const = N або const = 0). Відповідно, у циклі необхідно кожний раз лічильник зменшувати (або збільшувати) на 1 і за допомогою інструкції умовного переходу перевіряти, чи потрібно зробити цикл ще раз. Наприклад, у комірці пам’яті за адресою 1010 розміщений лічильник - const = K = 15, у комірці пам’яті за адресою 1110 – константа = 1 (const = 1), яка буде обслуговувати цей лічильник. Тоді програма обслуговування циклу: LOOP 1: . . . – мітка (адреса) попередньої частини програми; LOAD 10 - вибрати значення з комірки 10 і розмістити його у акумуляторі; SUB 11 - із значення, що є у акумуляторі, відняти 1; JNZ LOOP 1 – перехід на LOOP 1, якщо у результаті виконання попередньої операції ознака Z ≠ 0, тобто вміст акумулятора не дорівнює 0, інакше – перехід на наступну aдресу – LOOP 2. LOOP 2 . . . . Це є лічильник "на 0", тобто процедура LOOP 1 виконується K = 15 разів і кожний раз виконується перевірка числа таких виконань шляхом зменшення значення у лічильнику. Коли у лічильнику значення стане рівним 0, програма почне виконувати процедуру LOOP 2. Хід роботи 1. Ознайомитись з теоретичними відомостями до лабораторної роботи № 2. 2. Дослідити у потактовому режимі інструкції ROL, RCL, JP. Виписати результати та значення прапорців ознак. Інструкція ROL – циклічний зсув вліво (розряди обертаються, не потрапляючи у ознаку переносу С). Код інструкції 1111 100a aaaa aaaa. Перед початком виконання інструкції заніс до акумулятора число 1000 0000 0000 00012, надав нульового значення ЛАІ, в 0-ву комірку заніс код інструкції. № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ ( РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  2 РА ( РД 1111 1000 0000 0000 вибір коду інструкції з РА і занесення його до Регістра Даних  3 РД ( РІ 1111 1000 0000 0000 декодування інструкції у Регістрі Інструкцій  4 A ( А 0000 0000 0000 0010 Циклічний зсув вмістимого акумулятора  5 А ( РО 000 встановлення прапорців регістру ознак  6 ЛAІ +1 ( ЛAІ 0000 0000 0001 Перехід до наступної іструкції   Інструкція RCL – циклічний зсув вліво (розряди обертаються, потрапляючи у ознаку переносу С). Код інструкції 1111 110а аааа аааа. Перед виконання інструкції заніс до акумулятора число 1000 0000 0000 00012, , в 0-ву комірку заніс код інструкції, надав нульового значення ЛАІ. № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ ( РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  2 РА ( РД 1111 1100 0000 0000 Вибір коду інструкції з РА і занесення його до РД  3 РД ( РІ 1111 1100 0000 0000 Декодування інструкції у РІ  4 А>>(А 0000 0000 0000 0010 Зсув числа вліво на один розряд  5 А ( РО 001 встановлення прапорців регістру ознак  6 ЛАІ+1 ( ЛАІ 0000 0000 0001 Перехід до наступної іструкції   Інструкція JP – умовний перехід на певну комірку, якщо число у акумуляторі додатнє (S=0). Код інструкції 1010 аааа аааа аааа, де а – адрес комірки, на яку буде здійснюватись перехід. Перед початком виконання інструкції заніс до акумулятора число 0000 0000 0000 00012, в 0-ву комірку заніс код інструкції 1010 0000 0000 1111 (тобто якщо число додатне, відбувається перехід до 15 комірки), надав нульового значення ЛАІ. № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ ( РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  2 РА ( РД 1010 0000 0000 1111 Вибір коду інструкції з РА і занесення його до РД  3 РД ( РІ 1010 0000 0000 1111 Декодування інструкції у РІ  4 РІ (ЛАІ 0000 0000 1111 Умовний перехід на 15-ту комірку, якщо S=0, інакше  5 ЛАІ+1 ( ЛАІ 0000 0000 0010 Якщо S = 1 – перехід на 2-гу комірку   Скласти програму, яка реалізуватиме оператор IF (умову перевірки вибрати самостійно). Закодувати її, ввести у симулятор та виконати її дослідження у покроковому режимі, Текст програми оформити згідно з прикладом у теоретичній частині даних методичних вказівок. Алгоритм: Програма у машинних кодах: № комірки пам’яті Двійковий код інструкції Мнемонічний запис інструкції Коментар  0000 0000 0000 0000 0000 0001 0000 LOAD 16 завантажити до акумулятора змінну a  0000 0000 0001 0011 0000 0001 0001 SUB 17 відняти від змінної a змінну b  0000 0000 0010 1001 0000 0000 0101 JZ 5 якщо Z = 0 (a=b), перейти до c = a -b  0000 0000 0011 0001 0000 0001 0000 STORE 16; записати a на місце змінної c  0000 0000 0100 0111 1100 0000 0000 HALT зупинити програму  0000 0000 0101 0001 0000 0001 0010 STORE 18; записати a-b на місце змінної c  0000 0000 0110 0111 1100 0000 0000 HALT; зупинити програму   Програма виконана при a=b, тобто a-b=0; в результаті отримали 0. крок РА РД А РІ ЛАІ РО  1-й 0000 0001 0000 0000 0000 0000 0011 0000 0000 0000 0011 0000 0000 0001 0000 0000 0000 0001 000  2-й 0000 0001 0001 0000 0000 0000 0011 0000 0000 0000 0000 0011 0000 0001 0001 0000 0000 0010 100  3-й 0000 0000 0010 1001 0000 0000 0101 0000 0000 0000 0000 1001 0000 0000 0101 0000 0000 0101 100  4-й 0000 0001 0010 0000 0000 0000 0000 0000 0000 0000 0000 0001 0000 0001 0010 0000 0000 0110 100  5-й 0000 0000 0110 0111 1100 0000 0000 0000 0000 0000 0000 0111 1100 0000 0000 0000 0000 0110 100   Програма виконана при a>b, тобто a-b=с; в результаті отримали а. крок РА РД А РІ ЛАІ РО  1-й 0000 0001 0000 0000 0000 0000 0011 0000 0000 0000 0011 0000 0000 0001 0000 0000 0000 0001 000  2-й 0000 0001 0001 0000 0000 0000 0010 0000 0000 0000 0001 0011 0000 0001 0001 0000 0000 0010 000  3-й 0000 0000 0010 1001 0000 0000 0101 0000 0000 0000 0001 1001 0000 0000 0101 0000 0000 0011 000  4-й 0000 0001 0000 0000 0000 0000 0001 0000 0000 0000 0001 0001 0000 0001 0000 0000 0000 0100 000  5-й 0000 0000 0100 0111 1100 0000 0000 0000 0000 0000 0001 0111 1100 0000 0000 0000 0000 0100 000   Розробити алгоритм і cкласти програму в інструкціях симулятора DeComp, що для довільного числа "А" з комірки пам’яті за адресою "N" підраховує кількість"1". А – вибране число k – кількість одиниць у записі числа А b – лічильник циклу с – ознака виходу за межі розрядної сітки Алгоритм програми: Завантажити до акумулятора число A. Для того, щоб визначити значення старшого розряду числа, виконати логічний зсув вліво. Якщо це 12, то до попередньо підготовленої комірки пам’яті додаємо 110 ,якщо 02, пропускаємо додавання. В лічильнику циклу віднімаємо 110. Перевіряємо, чи число в лічильнику дорівнює 010 . Якщо ні, то повертаємося до п.2. Якщо так – закінчуємо програму. Адреса комірки пам’яті у десятковому коді Двійковий код інструкції Мнемонічний запис Інструкції Коментар  0 0000 0000 0000 1111 LOAD 15 Визначення старшого розряду за допомогою зсуву числа A на один розряд вліво  1 1111 1100 0000 0000 RCL   2 0001 0000 0000 1111 STORE 15   3 1101 0000 0000 0111 JC 7 Умовний перехід на 7 комірку, якщо С=1.Інакше виконується наступний оператор  4 0000 0000 0000 1100 LOAD 12 Збільшення лічильника одиниць на 1 та збереження нового значення.  5 0010 0000 0000 1101 ADD 13   6 0001 0000 0000 1100 STORE 12   7 0000 0000 0000 1110 LOAD 14 Зменшення лічильника циклу на 1 та збереження нового значення.  8 0011 0000 0000 1101 SUB 13   9 0001 0000 0000 1110 STORE 14   10 1000 0000 0000 0000 JNZ 0 Перевіряємо умову виконання циклу  11 0111 1100 0000 0000 HALT Завершення програми   Висновок: Засвоїв використання основних інструкцій зсуву і переходів у системі команд навчального комп’ютера DeComp, навчився організовувати цикли необхідної структури і використовувати їх у програмах.
Антиботан аватар за замовчуванням

20.12.2016 00:12-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!