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

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
УІ
Кафедра:
Не вказано

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

Рік:
2024
Тип роботи:
Звіт
Предмет:
Архітектура

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

Мета: зрозуміти принципи виконання архітектури системи команд на симуляторі машини Ноймана, зрозуміти і дослідити виконання інструкції. Завдання: розширити архітектуру систему команд симулятора машини Ноймана, скласти програму на асемблері з розшириним набором команд, перетворити її у машинні коди, запустити симулятор, увести до нього коди машинних, проаналізувати і пояснити отримані результати, довести коректність роботи розширеного набору команд, скласти звіт з виконання лабораторних досліджень та захистити його. Теоретичні відомості  Рис. 1. Схема роботи асемблера Загальна схема роботи асемблера (рис. 1) складається з 2 проходів. На першому проході асемблер перевіряє коректність синтаксису команд. На другому виконується генерування відповідних машинних команд, тобто числового представлення асемблерної команди. Функція readAndParse виконує зчитування рядку асемблерної програми і декодування на відповідні поля: мітка, код операції, операнди. Отримана таким чином і декодована інструкція перевіряється на коректність: існування команди, відповідна кількість аргументів, існування міток та т. п. Функція testRegArg перевіряє коректність використання назви регістра. Функція testAddrArg перевіряє коректність використання адреси. Функція labelArray перетворює відповідну мітку у адресу. Program.as та program.mc – відповідно вхідний та вихідний файли.  Рис. 2 Функціональна схема симулятора. Симулятор починає свою роботу ініціалізацією пам’яті та регістрів 0 значеннями (рис. 2.). Наступним кроком відбувається заванаження програми у машинних кодах в пам’ять. Далі відбувається покрокове виконання інструкцій та вивід стану на зовнішній пристрій (чи на екран консолі чи у файл). У stateStruct зберігається стан машини – значення регістрів, пам’яті та програмний лічільник. stateStruct Функція Run виконує обробку інструкцій з пам’яті, функція printState виводить поточний стан машини, а функція convertNum виконує перетворення числа у доповняльний код. Виконання завдання: 17 Десятковий логарифм   У програмах asol та ssol немає функції, яка б знаходила десятковий логарифм з числа. Тому необхідно додати її, а саме розширити набір інструкцій в даній програмі. Розширення інструкцій у програмі asol:     Розширення інструкцій у програмі ssol:    Код асемблерної програми:  Рис.3 Код програми Процес переведення асемблерної програми у машинні інструкції  Рис.4 Процес переведення асемблерної програми у машинні інструкції Результат виконання програми:  Рис.5 Машинні інструкції, що виконують програму Лістинг програми: @@@ state: pc 0 memory: mem[ 0 ] 8454151 mem[ 1 ] 8519688 mem[ 2 ] 8585225 mem[ 3 ] 30015489 mem[ 4 ] 17498113 mem[ 5 ] 16842749 mem[ 6 ] 25165824 mem[ 7 ] 100 mem[ 8 ] 100 mem[ 9 ] 2 mem[ 10 ] 3 registers: reg[ 0 ] 0 reg[ 1 ] 0 reg[ 2 ] 0 reg[ 3 ] 0 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state @@@ state: pc 1 memory: mem[ 0 ] 8454151 mem[ 1 ] 8519688 mem[ 2 ] 8585225 mem[ 3 ] 30015489 mem[ 4 ] 17498113 mem[ 5 ] 16842749 mem[ 6 ] 25165824 mem[ 7 ] 100 mem[ 8 ] 100 mem[ 9 ] 2 mem[ 10 ] 3 registers: reg[ 0 ] 0 reg[ 1 ] 100 reg[ 2 ] 0 reg[ 3 ] 0 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state @@@ state: pc 2 memory: mem[ 0 ] 8454151 mem[ 1 ] 8519688 mem[ 2 ] 8585225 mem[ 3 ] 30015489 mem[ 4 ] 17498113 mem[ 5 ] 16842749 mem[ 6 ] 25165824 mem[ 7 ] 100 mem[ 8 ] 100 mem[ 9 ] 2 mem[ 10 ] 3 registers: reg[ 0 ] 0 reg[ 1 ] 100 reg[ 2 ] 100 reg[ 3 ] 0 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state @@@ state: pc 3 memory: mem[ 0 ] 8454151 mem[ 1 ] 8519688 mem[ 2 ] 8585225 mem[ 3 ] 30015489 mem[ 4 ] 17498113 mem[ 5 ] 16842749 mem[ 6 ] 25165824 mem[ 7 ] 100 mem[ 8 ] 100 mem[ 9 ] 2 mem[ 10 ] 3 registers: reg[ 0 ] 0 reg[ 1 ] 100 reg[ 2 ] 100 reg[ 3 ] 2 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state @@@ state: pc 4 memory: mem[ 0 ] 8454151 mem[ 1 ] 8519688 mem[ 2 ] 8585225 mem[ 3 ] 30015489 mem[ 4 ] 17498113 mem[ 5 ] 16842749 mem[ 6 ] 25165824 mem[ 7 ] 100 mem[ 8 ] 100 mem[ 9 ] 2 mem[ 10 ] 3 registers: reg[ 0 ] 0 reg[ 1 ] 2 reg[ 2 ] 100 reg[ 3 ] 2 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state @@@ state: pc 6 memory: mem[ 0 ] 8454151 mem[ 1 ] 8519688 mem[ 2 ] 8585225 mem[ 3 ] 30015489 mem[ 4 ] 17498113 mem[ 5 ] 16842749 mem[ 6 ] 25165824 mem[ 7 ] 100 mem[ 8 ] 100 mem[ 9 ] 2 mem[ 10 ] 3 registers: reg[ 0 ] 0 reg[ 1 ] 2 reg[ 2 ] 100 reg[ 3 ] 2 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state machine halted total of 6 instructions executed final state of machine: @@@ state: pc 7 memory: mem[ 0 ] 8454151 mem[ 1 ] 8519688 mem[ 2 ] 8585225 mem[ 3 ] 30015489 mem[ 4 ] 17498113 mem[ 5 ] 16842749 mem[ 6 ] 25165824 mem[ 7 ] 100 mem[ 8 ] 100 mem[ 9 ] 2 mem[ 10 ] 3 registers: reg[ 0 ] 0 reg[ 1 ] 2 reg[ 2 ] 100 reg[ 3 ] 2 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state Висновок: у даній лабораторній роботі я зрозумів принципи виконання архітектури системи команд на симуляторі машини Ноймана, зрозуміти і дослідити виконання інструкцій.
Антиботан аватар за замовчуванням

14.03.2016 12:03-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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