DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

АК_lab3

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

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

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

Рік:
2013
Тип роботи:
Лабораторна робота
Предмет:
Архітектура комп’ютерів та комп’ютерних систем

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

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра ЕОМ / Лабораторна робота №3 з Архітектури комп’ютера на тему: «Робота з симулятором машини Ноймана. Дослідження виконання асемблерної програми симулятора.» Львів – 2013 Мета: опанувати роботу асемблера на симуляторі машини Ноймана, зрозуміти і дослідити принцип виконання програми машиною Ноймана. Завдання: скласти програму на асемблері, перетворити її у машинні коди, запустити симулятор, увести до нього коди машинних, проаналізувати і пояснити отримані результати, скласти звіт з виконання лабораторних досліджень та захистити його. Теоретичні відомості В ході виконання даної лабораторної роботи розглядається симулятор та асемблер 32 розрядного CISC комп’ютера. Даний комп’ютер містить 8 регістрів (0 вий регістр завжди зберігає 0) та 65536 комірок пом’яті по 32 розряди. Набір машинних інструкцій складається з 8 команд (табл. 1). Таблиця 1. Множина інструкцій № пп Код інструкції 2кове СУТНІСТЬ ІНСТРУКЦІЙ МАШИНИ  Інструкції R-типу  1 add 000 Додає вміст регістру regA до вмісту regB, та зберігає в destReg  2 nand 001 Виконує логічне побітове І-НЕ вмісту regA з вмістом regB, та зберігає в destReg  I-тип  3 lw 010 Завантажує regB з пам’яті. Адреса пам’яті формується додаванням зміщення до вмісту regA.  4 sw 011 Зберігає вміст регістру regB в пам’ять. Адреса пам’яті формується додаванням зміщення до вмісту regA.  5 beq 100 Якщо вміст регістрів regA та regB однаковий, виконується перехід на адресу програмний лічильник(ПЛ) + 1+зміщення, в ПЛ зберігається адреса поточної тобто beq інструкції.  J-тип  6 jalr 101 Спочатку зберігає ПЛ+1 в regB, в ПЛ адреса поточної (jalr) інструкції. Виконує перехід на адресу, яка зберігається в regA. Якщо в якості regA regB задано один і той самий регістр, то спочатку в цей регістр запишеться ПЛ+1, а потім виконається перехід до ПЛ+1.  O-тип  7 halt 110 Збільшує значення ПЛ на 1, потім припиняє виконання, стимулятор має повідомляти, що виконано зупинку.  8 noop 111 Нічого не виконується   Формат лінійки асемблерного коду наступний (<пробіл> означає послідовність табуляцій і/або пробілів): мітка <пробіл> інструкція<пробіл>поле№1<пробіл> поле№2<пробіл> поле№3<пробіл>коментар Крайнє ліве поле лінійки асемблерного коду – поле мітки. Коректна мітка має складатися максимуму з 6 символів, символами можуть бути літери або цифри, але починатися з букви. Поле мітки є необов’язковим, проте пробіл після даного поля є обов’язковим. Після не обов’язкової мітки іде обов’язковий пробіл. Далі іде поле назви інструкції, в якому може бути ім’я будь якої асемблерної інструкції зазначені вище в таблиці. Після пробілів ідуть відповідні поля. Всі поля можуть зберігати або десяткові значення або мітки. Кількість полів залежить від інструкції, поля які не використовуються ігноруються (подібно до коментарів). Інструкції r-типу (add, nand) потребують наявності 3 полів: поле№1 – regA, поле№2 regB поле№3 destReg. Інструкції і-типу (lw,sw,beq) вимагають 3 полів: поле№1 – regA, поле№2 regB поле№3 – числове значення зміщення чи символьна адреса. Числове значення може бути як додатнім так і відємним. Символьні адреси описані нижче. Інструкція J-типу (jalr) вимагає 2 полів: поле№1 – regA, поле№2 regB Інструкція 0-типу (noop, halt) не вимагає жодного. Символьні адреси посилаються на відповідні мітки. Для інструкцій lw та sw асемблер має згенерувати зміщення, яке дорівнює адресі мітки. Вона може використовуватися з 0 регістром, тоді буде посилання на мітку, або може використовуватися з не нульовим базовим регістром у якості індексу масиву, який починається з мітки. Для інструкції beq, асемблер має перетворити мітку в числове зміщення куди має відбуватися перехід. Після останнього поля має йти пробіл за яким може розміщуватися коментар. Коментар закінчується з кінцем лінії асемблерної програми. Крім інструкцій асемблерна програма може містити директиву - .fill (зверніть увагу на точку попереду). Директива . fill повідомляє компілятору про те, що він має зберегти число за адресою відповідно де дана інструкція знаходиться. Директива .fill використовує одне поле, в якому може бути як число так і символьна адреса. Наприклад «.fill 32» означає зберегти число 32 за адресою де дана інструкція знаходиться. (Оскільки в нас кожен рядок програми відповідає адресі починаючи з 0, то відповідно адреса буде дорівнювати номеру рядка - 1). Директива . fill з символьною адресою збереже адрессу даної мітки. В прикладі нижче ".fill start" збереже значення 2, тому що мітка start знаходиться за адресою 2. Код ассемблерної прогрма: lw 0 1 start lw 0 2 start lw 0 3 one lw 0 4 iter lw 0 6 fifty iter beq 1 6 end add 1 3 1 add 2 1 2 beq 0 0 iter end halt fifty .fill 50 start .fill 42 one .fill 1 Отриманий асемблюванням відповідний асемблерній програмі файл з вісім розрядним гексадецимальним машинним кодом цієї програми має назву ak3.mc та наступне наповнення: 8454155 8519691 8585228 8650757 8781834 17694723 720897 1114114 16842748 25165824 50 42 1 Послідовність виконання асемблювання та симуляції (за допомогою програм assemble.exe та simulate.exe): / Початок Кінець  memory[0]=8454155 memory[1]=8519691 memory[2]=8585228 memory[3]=8650757 memory[4]=8781834 memory[5]=17694723 memory[6]=720897 memory[7]=1114114 memory[8]=16842748 memory[9]=25165824 memory[10]=50 memory[11]=42 memory[12]=1 @@@ state: pc 0 memory: mem[ 0 ] 8454155 mem[ 1 ] 8519691 mem[ 2 ] 8585228 mem[ 3 ] 8650757 mem[ 4 ] 8781834 mem[ 5 ] 17694723 mem[ 6 ] 720897 mem[ 7 ] 1114114 mem[ 8 ] 16842748 mem[ 9 ] 25165824 mem[ 10 ] 50 mem[ 11 ] 42 mem[ 12 ] 1 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 machine halted total of 39 instructions executed final state of machine: @@@ state: pc 10 memory: mem[ 0 ] 8454155 mem[ 1 ] 8519691 mem[ 2 ] 8585228 mem[ 3 ] 8650757 mem[ 4 ] 8781834 mem[ 5 ] 17694723 mem[ 6 ] 720897 mem[ 7 ] 1114114 mem[ 8 ] 16842748 mem[ 9 ] 25165824 mem[ 10 ] 50 mem[ 11 ] 42 mem[ 12 ] 1 registers: reg[ 0 ] 0 reg[ 1 ] 50 reg[ 2 ] 414 reg[ 3 ] 1 reg[ 4 ] 17694723 reg[ 5 ] 0 reg[ 6 ] 50 reg[ 7 ] 0 end state   Висновок: Під час виконання цієї лабораторної роботи я опанував роботу асемблера на симуляторі машини Ноймана, зрозуміти і дослідити принцип виконання програми машиною Ноймана.
Антиботан аватар за замовчуванням

30.12.2013 17:32

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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