Набір інструкцій навчального комп’ютера. Загальний порядок виконання інструкцій

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра ЕОМ

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

Рік:
2008
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Організація та функціонування комп’ютерів

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи № 2 з дисципліни: “Організація та функціонування комп’ютерів” на тему: “ Набір інструкцій навчального комп’ютера. Загальний порядок виконання інструкцій.” Тема: “Набір інструкцій навчального комп’ютера. Загальний порядок виконання інструкцій.” Мета: 1. Засвоїти порядок виконання програм у комп’ютері. Ознайомитися з форматом та набором інструкцій симулятора навчальної ЕОМ. Засвоїти формати і способи використання інструкцій звертання до пам’яті та інструкцій арифметичних операцій; 2. Засвоїти призначення регістра ознак процесора; 3. Ознайомитися з потактовим режимом роботи навчального комп’ютера. 4. Засвоїти базовий порядок виконання інструкції навчального комп’ютера та навчитися досліджувати хід виконання окремих інструкцій. Теоретичні відомості Усі інструкції у навчальному комп’ютері можна поділяти за такими напрямками: За форматом коду інструкції; За призначенням. У свою чергу, адресні інструкції для виконання своєї операції потребують операнди, в якості яких може бути вміст будь-якої з 4096 комірок пам’яті симулятора. Отже, окрім коду операції, який займає найстарші 4 розряди машинного коду інструкції (від 15-го до 12-го ), решту розрядів займає 12-розрядна адреса комірки пам’яті, значення вмісту якої стане операндом і буде оброблятись у даній інструкції. Усі інструкції навчального комп’ютера за призначенням можна розділити на такі групи: 1) інструкції звертання до пам’яті (LOAD та STORE); 2) арифметичні інструкції (ADD та SUB); 3) логічні інструкції (AND, OR, XOR та NOT); 4) інструкції вводу/виводу (INPUT та OUTPUT); 5) інструкції керування виконанням програми: а) інструкція зупинки (HALT); б) інструкції умовних переходів (JNZ, JZ, JP, JM, JNC та JC); в) інструкція безумовного переходу (JMP); 6) інструкції зсувів (вліво (Left) та вправо (Right)): а) інструкції логічного зсуву (LSL та LSR); б) інструкції арифметичного зсуву (ASL та ASR); в) інструкції циклічного зсуву (ROL та ROR); г) інструкції циклічного зсуву через тригер ознаки переносу C (RCL та RCR). Інструкції арифметичних операцій: 1) ADD ADR – арифметичне додавання (від англ. Addition -додавання) Машинний код – 0010 aaaa aaaa aaaa; виконання – Акумулятор + (ADDR) ( Акумулятор. Ця інструкція виконує додавання вмісту акумулятора і числа з комірки пам’яті, на яку вказує адреса ADR, та записує результат назад до акумулятора. Перші 4 розряди машинного коду містять код операції додавання – 0010, а решта 12 розрядів – адресу у пам’яті 2-го операнда, що буде додаватись. Можна не переживати, що результат знищить одне з 2-х чисел, яке перед виконанням дії додавання було записано з пам’яті до акумулятора, бо воно залишилося у пам’яті за своєю адресою. Проте, якщо операнд був записаний в акумулятор як результат виконання попередньої інструкції і не був збережений у пам’яті, то тоді він пропаде – буде “затертий” новим значенням акумулятора. 2) SUB ADR – віднімання (від англ. Subtraction - віднімання). Машинний код – 0011 aaaa aaaa aaaa; виконання: Акумулятор – (ADDR) ( Акумулятор. Ця інструкція виконує віднімання від вмісту акумулятора значення вмісту комірки пам’яті з адресою, що вказана у полі ADR, і записує результат назад до акумулятора. Код операції віднімання – 0011, а решту 12 розрядів займає адреса комірки, вміст якої буде відніматися. Інші властивості цієї інструкції співпадають із властивостями інструкції додавання ADD. Призначення Регістру Ознак Відповідно до обмежень, які закладені у архітектурі любого комп’ютера, у тому числі і нашого навчального – симулятора DeComp, результат виконання арифметичних і більшості інших інструкцій необхідно аналізувати для визначення його певних особливостей. Що саме: - потрібно відрізняти додатні і від’ємні числа; - потрібно визначати стан, коли результат виконання інструкції дорівнює нулю; - потрібно визначати переповнення розрядної сітки акумулятора. Для фіксації цих станів існує регістр ознак у процесорі, який має три тригери: Z, S i C. На панелі навчального комп’ютера він розміщений біля акумулятора. Прапорець Z (Zero - нуль) встановлюється у 1 (світиться), якщо результат операції дорівнює 0. Зрозуміло, що для команди ADD ця ознака встановиться лише у випадку, якщо до 0 додати 0, або якщо додаються два однакових числа з протилежними знаками. Прапорець S (Sign - знак) встановлюється в 1, якщо результат операції – від’ємне число. Знову ж таки, інструкція ADD не може дати від’ємного результату за винятком чисел у доповняльному коді, яких ми поки-що не розглядаємо. Зрозуміло, якщо віднімати від меншого числа більше інструкцією SUB, отримаємо ознаку від’ємного результату S. Прапорець C (Carry - перенос) встановлюється в 1, коли у результаті арифметичної операції (додавання чи віднімання) виникає перенос із старшого розряду результату або при виконанні операції зсуву вправо чи вліво крайній розряд числа вийшов за межі розрядної сітки. Так, наприклад, перенос виникне і, відповідно, встановиться тригер C, якщо додати два 16-ти розрядних числа у 16-ти розрядному процесорі: Дослідження виконання інструкцій навчального комп’ютера Оскільки більшість інструкцій призначені для виконання різних операцій, для яких необхідні вхідні числа, а також збереження результату, для більшості процесорів комп’ютерів стандартним є такий, більш детальний порядок виконання інструкцій: вибірка інструкції; декодування (розпізнавання) інструкції; вибірка (читання) операндів; виконання операції (арифметичної, логічної чи якоїсь іншої); збереження (запис) результату. Для дослідження порядку виконання окремих інструкцій у процесорі призначений 3-й режим роботи навчального комп’ютера – потактовий. 2.Порядок виконання роботи 1. Описати призначення прапорців Регістру Ознак: Прапорець Z (Zero - нуль) встановлюється у 1 (світиться), якщо результат операції дорівнює 0. Зрозуміло, що для команди ADD ця ознака встановиться лише у випадку, якщо до 0 додати 0, або якщо додаються два однакових числа з протилежними знаками. Прапорець S (Sign - знак) встановлюється в 1, якщо результат операції – від’ємне число. Знову ж таки, інструкція ADD не може дати від’ємного результату за винятком чисел у доповняльному коді, яких ми поки-що не розглядаємо. Зрозуміло, якщо віднімати від меншого числа більше інструкцією SUB, отримаємо ознаку від’ємного результату S. Прапорець C (Carry - перенос) встановлюється в 1, коли у результаті арифметичної операції (додавання чи віднімання) виникає перенос із старшого розряду результату або при виконанні операції зсуву вправо чи вліво крайній розряд числа вийшов за межі розрядної сітки. Так, наприклад, перенос виникне і, відповідно, встановиться тригер C, якщо додати два 16-ти розрядних числа у 16-ти розрядному процесорі: Ввести у симулятор і виконати дослідження у потактовому режимі програми додавання двох чисел, яка була підготована у роботі № 1. Записати результати – мікропрограму виконання з необхідними поясненями. № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ ( РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  2 РА ( РД 0000 0000 0000 1010 вибір коду інструкції з РА і занесення його до Регістра Даних  3 РД ( РІ 0000 0000 0000 1010 декодування інструкції у Регістрі Інструкцій  4 РІ ( РА 0000 0000 1010 вибір адреси 1-го операнда  5 РА ( РД 0000 0000 0001 1011 вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних  6 РД ( А 0000 0000 0001 1011 Вибір коду інструкції з РД і занесення його до А  7 ЛАІ + 1 ( ЛАІ 0000 0000 0001 підготовка адреси нової інструкції  8 ЛАІ ( РА 0000 0000 0001 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  9 РА ( РД 0010 0000 0000 1111 вибір коду інструкції з РА і занесення його до Регістра Даних  10 РД ( РІ 0010 0000 0000 1011 декодування інструкції у Регістрі Інструкцій  11 РІ ( РА 0000 0000 1011 вибір адреси 1-го операнда  12 РА ( РД 0000 0000 0001 1011 вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних  13 РД ( А 0000 0000 0010 1010 виконання операції додавання (2-й операнд – у акумуляторі)  14 ZSC(А) ( РО 000 встановлення прапорців регістру ознак  15 ЛАІ + 1 ( ЛАІ 0000 0000 0010 підготовка адреси нової інструкції  16 ЛАІ ( РА 0000 0000 0010 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  17 РА ( РД 0001 0000 0000 1100 вибір коду інструкції з РА і занесення його до Регістра Даних  18 РД ( РІ 0001 0000 0000 1100 декодування інструкції у Регістрі Інструкцій  19 РІ ( РА 0000 0000 1100 вибір адреси 1-го операнда  20 А ( РД 0000 0000 0001 1011 Занесення результату з А до РД  21 РД ( пам’ять 0000 0000 0001 1011 Запис числа з РД у комірку пам’яті РА  22 ЛАІ + 1 ( ЛАІ 0000 0000 0011 підготовка адреси нової інструкції  23 ЛАІ ( РА 0000 0000 0011 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  24 РА ( РД 0111 1100 0000 0000 вибір коду інструкції з РА і занесення його до Регістра Даних  25 РД ( РІ 0111 1100 0000 0000 декодування інструкції у Регістрі Інструкцій  Ввести у симулятор та виконати дослідження у покроковому режимі програми, яка відніматиме два числа А і В для значень, коли А = В, А > В і А < В, вибравши довільні відповідні значення. Виписати результати виконання дослідження і значення прапорців ознак у таблицю, взірець якої поданий у роботі № 1. Поясніть отримані результати. Програма у покроковому режимі яка віднімає два числа А і В для значень, коли А = В, А > В і А < В: До комірки з адресою 0 (0000 0000 0000) записую двійковий код першої інструкції – 0000 0000 0000 0111. До комірки з адресою 1 (0000 0000 0001) записую двійковий код другої інструкції – 0011 0000 0000 1000. До комірки з адресою 2 (0000 0000 0010) записую двійковий код третьої інструкції – 0001 0000 0000 1001. До комірки з адресою 3 (0000 0000 0011) записую двійковий код четвертої інструкції – 0111 1100 0000 0000. а) А = 1111, В = 1111. РА РД А РІ ЛАІ О  1-й крок 1010 11011 11011 1010 0001 -  2-й крок 1011 11011 0000 0011 0000 0000 1011 0010 Z  3-й крок 1100 101010 0000 0001 0000 0000 1100 0011 Z  4-й крок 0011 0111 1100 0000 0000 0000 0111 1100 0000 0000 0011 Z   цьому випадку в регістрі ознак жовтим кольором засвітилося значення z. Це означає, що результатом програми є нуль. І справді, якщо прочитати зачення результату у комірці 1001 то там буде 0000 0000 0000 0000. б) А>В А = 11011, В = 1111. РА РД А РІ ЛАІ О  1-й крок 1010 11011 11011 1010 0001 -  2-й крок 1011 1111 1100 0011 0000 0000 1011 0010 -  3-й крок 1100 101010 1100 0001 0000 0000 1100 0011 -  4-й крок 0011 0111 1100 0000 0000 1100 0111 1100 0000 0000 0011 -  В цьому випадку регістр ознак не набуває жодного значення оскільки результатом дії не є нуль і є додатнє число. Якщо прочитати зачення результату у комірці 1001 то там буде 0000 0000 0000 0001. в) A<B А = 1111 В = 11011 РА РД А РІ ЛАІ О  1-й крок 1010 1111 1111 1010 0001 -  2-й крок 1011 11011 1111 1111 1111 0100 0011 0000 0000 1011 0010 SC  3-й крок 1100 1111 1111 1111 0100 1111 1111 1111 0100 0001 0000 0000 1100 0011 SC  4-й крок 0011 0111 1100 0000 0000 1100 0111 1100 0000 0000 0011 SC   В даному випадку засвітилися жовтим кольором прапорці S і C. S означає, що результатом є від’ємне число. С означає, що це результат вийшов за межі розрядної сітки, тобто виник перенос із старшого розряду результату і крайній розряд числа вийшов за межі розрядної сітки. Якщо прочитати зачення результату у комірці 1001 то там буде 1111 1111 1111 0100 Ввести у симулятор та виконати дослідження у потактовому режимі 3-х окремих інструкції – LOAD, STORE i SUB. Пояснити необхідну підготовку числових даних, виписати порядок виконання інструкцій у вигляді мікропрограм із вказанням реальних значень регістрів і поясненням дій, що виконуються у кожному такті. Інструкція LOAD. В даному випадку зевантажує значення з комірки 0000 0000 0111 до акумулятора. 0000 0000 0111 – код першої інструкції 0111 1100 0000 – код другої інструкції № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ ( РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  2 РА ( РД 0000 0000 0000 1111 вибір коду інструкції з РА і занесення його до Регістра Даних  3 РД ( РІ 0000 0000 0000 1111 декодування інструкції у Регістрі Інструкцій  4 РІ ( РА 0000 0000 1111 вибір адреси 1-го операнда  5 РА ( РД 0000 0000 0001 1011 вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних  6 РД ( А 0000 0000 0001 1011 виконання операції завантаження (2-й операнд – у акумуляторі)   Інструкція STORE. В даному випадку записує значення вмісту акумулятора у комірку пам’яті 0000 0000 0010. № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ ( РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  2 РА ( РД 0001 0000 0000 0010 вибір коду інструкції з РА і занесення його до Регістра Даних  3 РД ( РІ 0001 0000 0000 0010 декодування інструкції у Регістрі Інструкцій  4 РІ ( РА 0000 0000 0010 вибір адреси 1-го операнда  5 А ( РД 0000 0000 0010 1010 вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних  6 РД ( РА 0000 0000 0010 1010 виконання операції записування (2-й операнд – у акумуляторі)   Інструкція SUB – це інструкція віднімання. Її машинний ко 0011, решту займає адреса комірки. Мнемонічний запис Код, що обробляється Коментар  ЛАІ ( РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  РА ( РД 0011 0000 0000 0010 вибір коду інструкції з РА і занесення його до Регістра Даних  РД ( РІ 0011 0000 0000 0010 декодування інструкції у Регістрі Інструкцій  РІ ( РА 0000 0000 0010 вибір адреси 1-го операнда  А ( РД 0000 0000 0000 1100 Віднімання вмісту акумулятора і даного, що міститься в комірці 1   Висновки: У даній лабораторній роботі я навчився працювати з інструкціями LOAD, STORE i SUB, засвоїв та ознайомився з регістром ознак процесора, навчився досліджувати програму у потактовому режимі та дослідив хід виконання окремих інструкцій.
Антиботан аватар за замовчуванням

04.05.2013 09:05-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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