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

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

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

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

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

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

Міністерство освіти і науки, молоді та спорту України Національний університет „Львівська політехніка” Кафедра СКС Звіт з лабораторної роботи № 2 з дисципліни: “Організація та функціонування комп’ютерів” на тему: “ Набір інструкцій навчального комп’ютера. Загальний порядок виконання інструкцій. ” Мета: 1. Засвоїти порядок виконання програм у комп’ютері. Ознайомитися з форматом та набором інструкцій симулятора навчальної ЕОМ. Засвоїти формати і способи використання інструкцій звертання до пам’яті та інструкцій арифметичних операцій; 2. Засвоїти призначення регістра ознак процесора; 3. Ознайомитися з потактовим режимом роботи навчального комп’ютера. 4. Засвоїти базовий порядок виконання інструкції навчального комп’ютера та навчитися досліджувати хід виконання окремих інструкцій. Ознайомитись з теоретичними відомостями до лабораторної роботи. Усі інструкції у навчальному комп’ютері можна поділяти за такими напрямками: За форматом коду інструкції; За призначенням. За форматом коду інструкції є адресні та безадресні. Безадресні інструкції взагалі не використовують будь-які операнди, як, наприклад, інструкція HALT або інструкції зсувів. У таких інструкціях однозначно відомо, звідки брати операнди для операції, наприклад: - інструкція NOT однозначно працює з акумулятором (інвертує його вміст); - так само роблять усі інструкції зсувів (LSL, ASR, ROR та інші); - а от інструкції INPUT та OUTPUT працюють не лише з акумулятором, але й з портами вводу (INPUT) та виводу (OUTPUT). У свою чергу, адресні інструкції для виконання своєї операції потребують операнди, в якості яких може бути вміст будь-якої з 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). 2) Описати призначення прапорців Регістру Ознак. Відповідно до обмежень, які закладені у архітектурі любого комп’ютера, у тому числі і нашого навчального – симулятора DeComp, результат виконання арифметичних і більшості інших інструкцій необхідно аналізувати для визначення його певних особливостей. Що саме: - потрібно відрізняти додатні і від’ємні числа; - потрібно визначати стан, коли результат виконання інструкції дорівнює нулю; - потрібно визначати переповнення розрядної сітки акумулятора. Для фіксації цих станів існує регістр ознак у процесорі, який має три тригери: Z, S i C. На панелі навчального комп’ютера він розміщений біля акумулятора. Прапорець Z (Zero - нуль) встановлюється у 1 (світиться), якщо результат операції дорівнює 0. Зрозуміло, що для команди ADD ця ознака встановиться лише у випадку, якщо до 0 додати 0, або якщо додаються два однакових числа з протилежними знаками. Прапорець S (Sign - знак) встановлюється в 1, якщо результат операції – від’ємне число. Знову ж таки, інструкція ADD не може дати від’ємного результату за винятком чисел у доповняльному коді, яких ми поки-що не розглядаємо. Зрозуміло, якщо віднімати від меншого числа більше інструкцією SUB, отримаємо ознаку від’ємного результату S. Прапорець C (Carry - перенос) встановлюється в 1, коли у результаті арифметичної операції (додавання чи віднімання) виникає перенос із старшого розряду результату або при виконанні операції зсуву вправо чи вліво крайній розряд числа вийшов за межі розрядної сітки. Ввести у симулятор і виконати дослідження у потактовому режимі програми додавання двох чисел, яка була підготована у роботі № 1. Записати результати –мікропрограму виконання з необхідними поясненями. У комарках памяті 10 та 11 знаходяться числа 22 і 33 відповідно. Необхідно знайти їхню суму та записати в комірку 12. Для виконання інструкцій використовуються комірки під номерами 0-3. 1-й такт. Натиснемо кнопку ПУСК. У результаті спочатку синім кольором засвітиться лічильник адреси інструкції (ЛАІ), а потім білим – регістр адреси пам’яті (РА) і значення ЛАІ опиниться у РА, тобто код розміщення нашої першої інструкції - 0000 0000 0000. ЛАІ  РА. 2-й такт. Тепер синім кольором засвітиться вікно пам’яті, а білим – регістр даних пам’яті (РД), тобто значення (вміст) виділеної комірки пам’яті (на яку вказує РА) зчитується і записується до РД – у мому випадку випадку – 0000 0000 0000 1010 . ПамРА  РД. 3-й такт: Синій – РД, білий – регістр інструкції (РІ), тобто ми переносимо машинний код інструкції з РД до спеціального регістра – РІ. (0000 0000 0000 1010) РД  РІ. 4-й такт. В 4-му кроці значення адреси операнда (тобто 0000 0000 1010) з регістру інструкцій РІ заноситься до РА: АДР (РІ)  РА. 5-й такт. Операнд (тобто, двійковий код числа 2210 - 0000 0000 0001 0110) зчитується з пам’яті і записується до РД: Пам(РА)  РД. 6-й такт. Операнд (0000 0000 0001 0110) зчитується з РД і записується в А(акумулятор): РДА 7-й такт. Підгттовка адресу (0000 0000 0001) наступної інструкції. ЛАІ+1 ЛАІ 8-й такт. З ЛАІ адреса (0000 0000 0001) наступної інструкції записується в РА. ЛАІ РА 9-й такт. Зміст виділеної комірки памяті (0010 0000 0000 1011) записався в РД. памРА РД. 10-й такт. Переносимо код (0010 0000 0000 1011) з РД в РІ. РД РІ 11-й такт. Значення адреси (0000 0000 1011) з РІ переноситься в РА. адрРІ РА. 12-й такт. Значення виділеної комірки (0000 0000 0010 0001) зчитується з записується в РД. памРА РД. 13-й такт. Значення РД (0000 0000 0010 0001) додається до значення (0000 0000 0001 0110) яке знаходилося в А ( акумуляторі ). Результат (0000 0000 0011 0111) А+РД А. 14-й такт. Оскільки операція додавання є арифметичною, тому вона впливає на усі 3 прапорці регістру ознак (РО). Внутрішні схеми процесора аналізують у акумуляторі результат виконання операції і включають, при необхідності, відповідний прапорець: Z, S, C (A)  РО. 15-й такт. Підготовка адресу (0000 0000 0010) наступної інструкції. ЛАІ+1 ЛАІ. 16-й такт. З ЛАІ адреса (0000 0000 0010) наступної інструкції записується в РА. ЛАІ РА. 17-й такт. Зміст виділеної комірки памяті (0001 0000 0000 1100) записався в РД. памРА РД. 18-й такт. Переносимо код (0001 0000 0000 1100) з РД в РІ. РД РІ. 19-й такт. Значення адреси (0000 0000 1100) з РІ переноситься в РА. адрРІ РА. 20-й такт. Значення А(акумулятора) (0000 0000 0011 0111) записується в РД. А РД. 21-й такт. Значення РД (0000 0000 0011 0111) записується в виділену комірку пам’яті РА (0000 0000 1100). РД памРА. 22-й такт. Підготовка адресу (0000 0000 0011) наступної інструкції. ЛАІ+1 ЛАІ. 23-й такт. З ЛАІ адреса (0000 0000 0011) наступної інструкції записується в РА. ЛАІ РА. 24-й такт. Зміст виділеної комірки (0111 1100 0000 0000) памяті записався в РД. памРА РД. 25-й такт. Переносимо код (0111 1100 0000 0000) і з РД в РІ. РД РІ. № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ  РА 0000 0000 0000 вибір адреси 1-ї інструкції і занесення її до Регістра Адреси  2 памРА  РД 0000 0000 0000 1010 вибір коду 1-ї інструкції з пам’яті і запис її до Регістру Даних  3 РД  РІ 0000 0000 0000 1010 декодування інструкції у Регістрі Інструкцій  4 адрРІ РА 0000 0000 1010 вибір адреси 1-го операнда  5 памРА  РД 0000 0000 0001 0110 вибір коду 1-го операнда з РА і занесення його до Регістра Даних  6 РДА 0000 0000 0001 0110 Занесення значення 1-го операнда РД в А(акумулятор)  7 ЛАІ+1 ЛАІ 0000 0000 0001 підготовка адреси нової інструкції  8 ЛАІ РА 0000 0000 0001 вибір адреси 2-ї інструкції і занесення її до Регістра Адреси  9 памРА РД 0010 0000 0000 1011 вибір коду 2-ї інструкції з пам’яті і запис її до Регістру Даних  10 РД РІ 0010 0000 0000 1011 декодування інструкції у Регістрі Інструкцій  11 адрРІ РА 0000 0000 1011 вибір адреси операнда  12 памРА РД 0000 0000 0010 0001 Занесення значення 2-го операнда в РД  13 А+РД А 0000 0000 0010 0001 + 0000 0000 0001 0110 = 0000 0000 0011 0111 виконання операції додавання (1-й операнд – у акумуляторі)  14 Z,S,C(A)РО 000 встановлення прапорців регістру ознак  15 ЛАІ+1 ЛАІ 0000 0000 0010 підготовка адреси нової інструкції  16 ЛАІ РА 0000 0000 0010 вибір адреси 3-ї інструкції і занесення її до Регістра Адреси  17 памРА РД 0001 0000 0000 1100 вибір коду 3-ї інструкції з пам’яті і запис її до Регістру Даних  18 РД РІ 0001 0000 0000 1100 декодування інструкції у Регістрі Інструкцій  19 адрРІ РА 0000 0000 1100 вибір адреси операнда  20 А РД 0000 0000 0011 0111 Запис значення операнда А в РД  21 РД памРА 0000 0000 0011 0111 0000 0000 1100 Запис значення операнда РД в виділену пам'ять РА  22 ЛАІ+1 ЛАІ 0000 0000 0011 підготовка адреси нової інструкції  23 ЛАІ РА 0000 0000 0011 вибір адреси 4-ї інструкції і занесення її до Регістра Адреси  24 памРА РД 0111 1100 0000 0000 вибір коду 4-ї інструкції з пам’яті і запис її до Регістру Даних  25 РД РІ 0111 1100 0000 0000 декодування інструкції у Регістрі Інструкцій   4) Ввести у симулятор та виконати дослідження у покроковому режимі програми, яка відніматиме два числа А і В для значень, коли А = В, А > В і А < В, вибравши довільні відповідні значення. Виписати результати виконання дослідження і значення прапорців ознак у таблицю, взірець якої поданий у роботі № 1. Поясніть отримані результати. А) A=B A=1510=11112; B=1510=11112. РА РД А РІ ЛАІ РО  1-й крок 0000 0000 1010 0000 0000 0000 1111 0000 0000 0000 1111 0000 0000 0000 1010 0000 0000 0001 000  2-й крок 0000 0000 1011 0000 0000 0000 1111 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   У результаті віднімання двох однакових числе ми отримуємо 0, тому засвітився прапорець «Z» Регістру Ознак. B) A>B A=1510=11112; B=1310=11012 РА РД А РІ ЛАІ РО  1-й крок 0000 0000 1010 0000 0000 0000 1111 0000 0000 0000 1111 0000 0000 0000 1010 0000 0000 0001 000  2-й крок 0000 0000 1011 0000 0000 0000 1101 0000 0000 0000 0010 0011 0000 0000 1011 0000 0000 0010 000  3-й крок 0000 0000 1100 0000 0000 0000 0010 0000 0000 0000 0010 0001 0000 0000 1100 0000 0000 0011 000  4-й крок 0000 0000 0011 0111 1100 0000 0000 0000 0000 0000 0010 0111 1100 0000 0000 0000 0000 0011 000   У результаті віднімання двох додатніх чисел, меншого від більшого, ми отримуємо число додатнє, тому не засвітився жоден прапорець Регістру Ознак. C) A<B A=1510=11112; B=1610=100002 РА РД А РІ ЛАІ РО  1-й крок 0000 0000 1010 0000 0000 0000 1111 0000 0000 0000 1111 0000 0000 0000 1010 0000 0000 0001 000  2-й крок 0000 0000 1011 0000 0000 0001 0000 1111 1111 1111 1111 0011 0000 0000 1011 0000 0000 0010 011  3-й крок 0000 0000 1100 1111 1111 1111 1111 1111 1111 1111 1111 0001 0000 0000 1100 0000 0000 0011 011  4-й крок 0000 0000 0011 1111 1111 1111 1111 1111 1111 1111 1111 0111 1100 0000 0000 0000 0000 0011 011   У результаті віднімання двох додатніх числе, більшого від меншого ми отримуємо число від’ємне, тому засвітився прапорець Регістра Ознак «S». Ввести у симулятор та виконати дослідження у потактовому режимі 3-х окремих інструкції – LOAD, STORE i SUB. Пояснити необхідну підготовку числових даних, виписати порядок виконання інструкцій у вигляді мікропрограм із вказанням реальних значень регістрів і поясненням дій, що виконуються у кожному такті. Інструкція LOAD: Зчитування числа 1510 (0000 0000 0000 11112) із комірки 1010 (0000 0000 0000 10102). № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ РА 0000 0000 0000 вибір адреси інструкції і занесення її до Регістра Адреси  2 памРА РД 0000 0000 0000 1010 вибір коду інструкції з пам’яті і запис її до Регістру Даних  3 РД РІ 0000 0000 0000 1010 декодування інструкції у Регістрі Інструкцій  4 адрРІ РА 0000 0000 1010 вибір адреси операнда  5 памРА РД 0000 0000 0000 1111 вибір коду операнда з Регістру Адрес і занесення його до Регістра Даних  6 РД А 0000 0000 0000 1111 Занесення значення операнда РД в А(акумулятор)  7 ЛАІ + 1  ЛАІ 0000 0000 0001 підготовка адреси нової інструкції   Для виконання команди LOAD необхідно підготувати числа які будуть зчитуватися, підготувати інструкцію 0000 аааа аааа аааа( де аааа аааа аааа – адреса комірки, яка буде зчитуватися, а 0000 код команди LOAD). Інструкція STORE: Запис числа 0 який знаходиться в А(акумоляторі) до 1210 (0000 0000 11002) комірки пам’яті. № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ РА 0000 0000 0000 вибір адреси інструкції і занесення її до Регістра Адреси  2 памРА РД 0001 0000 0000 1100 вибір коду інструкції з пам’яті і запис її до Регістру Даних  3 РД РІ 0001 0000 0000 1100 декодування інструкції у Регістрі Інструкцій  4 адрРІ РА 0000 0000 1100 вибір адреси операнда  5 РД памРА 0000 0000 0000 0000 Запис значення Регістру Даних до виділеної комірки пам’яті Регістру Адрес  6 ЛАІ + 1  ЛАІ 0000 0000 0001 підготовка адреси нової інструкції  Для виконання команди STORE необхідно записати число в А(акумулятор) яке буде записано в пам’ять, також необхідно підготувати інструкцію 0001 аааа аааа аааа ( де аааа аааа аааа – адреса комірки, у яку буде записно число, а 0001 код команди STORE). Інстукція SUB: Віднімання числа 1510 (0000 0000 0000 11112), яке знаходиться в комірці 1010 (10102) від числа 24010 (0000 0000 1111 00002) ,яке знаходиться в А(акумуляторі). № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ  РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  2 РА  РД 0011 0000 0000 1010 вибір коду інструкції з РА і занесення його до Регістра Даних  3 РД  РІ 0011 0000 0000 1010 декодування інструкції у Регістрі Інструкцій  4 РІ  РА 0000 0000 1010 вибір адреси 1-го операнда  5 РА  РД 0000 0000 0000 1111 вибір коду 1-го операнда з пам’яті і запис його до Регістру Даних  6 А-РД  А 0000 0000 1110 0001 виконання операції віднімання (2-й операнд – у акумуляторі)  7 ZSC(А)  РО 000 встановлення прапорців регістру ознак  8 ЛАІ + 1  ЛАІ 0000 0000 0001 підготовка адреси нової інструкції   Для виконання команди SUB необхідно підготувати числа, з якими буде проходити виконання дії,а аткож інструкцію 0011 аааа аааа аааа ( де аааа аааа аааа – адреса комірки, у якій знаходиться число яке будудть віднімати, а 0011 код команди SUB). Висновки: У цій лабораторній роботі я засвоїв порядок виконання програм у комп’тері, ознайомився з форматом та набором інструкцій стимулятора навчально ЕОМ, засвоїм формати та способи використання інструкцій звертання до пам’яті та інструкції арифметичних операцій. Засвоїв призначення РО( Регістра Ознак) процесора. Ознайомився з потактовим режимом роботи навчального комп’ютера. Засвоїв базовий порядок виконання інструкції навчального комп’ютера та навчився досліджувати хід виконання окремих інструкцій.
Антиботан аватар за замовчуванням

27.01.2013 12:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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