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

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

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

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

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

Міністерство освіти та науки України Національний університет “Львівська політехніка” Інститут післядипломної освіти кафедра АСУ  Звіт лабораторних робіт з дисципліни архітектура комп‘ютерів Лабораторна робота №1 Тема: Загальна структура мікро лабораторії і процесора. Мета: Вивчити структуру мікро лабораторії і процесора, і після чого написати програму за вказівками поданими нижче. Хід роботи Ядром мікропроцесорної обчислювальної техніки є базовий виріб сучасної інтегральної технології — мікропроцесор. Термін МП визначає одну або декілька ВІС, що виконують функцію центрального процесора по обробці цифрової інформації і управляє процесором обробки.МП складається з операційного пристрою, пристрою управління і синхронізації та пам’яті. Мікропроцесор - складний програмно-керований пристрій, призначений для обробки цифрової інформації та керування процесом цієї обробки, виконаний у вигляді однієї чи кількох інтегральних мікросхем підвищеного ступеня інтеграції (ВІС чи НВІС). Мікролабораторія являє собою мікрокомп'ютер на базі однокристального мікропроцесора "КР580ИК80А ". У мікропроцесорі є такі 8-бітні регістри : А-акумулятор, в якому знаходиться результат виконання довільної арифметико-логічної 8-бітної операції; F-регістр прапорців (ознак); В, С, D, Е, H, L-регістри загального призначення. Вони об'єднуються у 16-бітні регістри по парах:AF, BC,DE, HL. Команда може займати від одного до трьох байтів: перший байт – код операції, другий та третій - 8-бітний або 16-бітний операнд (в залежності від операції). Після виконання арифметико-логічної команди в мікропроцесорі встановлюються ознаки результату, які зберігаються у двійковому вигляді і називаються прапорцями. Пам'ять розділено на постійну і оперативну, у постійній пам'яті знаходиться монітор - програма, на яку передається управління після натиснення клавіші "СБРОС". Монітор дозволяє вводити і запускати в абсолютному шістнадцятковому коді програму користувача, а також має тестову програму, яка грає мелодію. В оперативній пам'яті (її початок знаходиться за адресою #8000) розміщені програми користувача, стек та робочі комірки монітора . Для введення програми її треба перед тим відтранслювати з допомогою таблиці кодів. Трансляція виконується в такій послідовності: записується в 16-ій формі адреса команди, код операції, операнди (якщо передбачені). Після того програма готова виконати наступні дії: Натиснути "СБРОС" ; Набрати на клавіатурі адресу початку програми (8000); Натиснути клавішу "УСТ. АДР" . Набрана адреса повинна з'явитись на чотирьох лівих індикаторах. Якщо адреса не з'явилась, або з'явилась з помилкою, то повторити з пункту 1. Набирати на двох правих індикаторах коди програми і даних, натискаючи після кожного байту клавішу "ЗАП". Перевірити введені коди, рухаючись по пам'яті за допомогою клавіш "АД-", "АД+". Якщо знайдено код з помилкою, набрати вірне значення і натиснути "ЗАП". Якщо адреса коду, яка висвічується на чотирьох лівих індикаторах не співпадає з адресою, яка вказана у тексті програми, то повторити ввід з пункту 1. 6. Встановити адресу початку програми і натиснути "ПУСК". Процесор отримує і видає інформацію назовні через інтерфейс вводу/виводу - мікромодуль "КР580ВВ55А". Інтерфейс має три 8- бітні порти, до яких під'єднані клавіатура (крім клавіші "СБРОС"), світлодіоди, перемикачі, гучномовець. Обмін з інтерфейсом йде через акумулятор за допомогою команд "IN","OUT". Перед тим, як працювати з інтерфейсом, його потрібно запрограмувати за допомогою керуючого коду, що вказує, які порти повинні працювати на ввід, а які - на вивід. Завдання У лабораторній роботі необхідно ввести і виконати програму, яка вводить дані з перемикачів, обробляє їх і виводить результат на світло діоди. Результат Адреса Програма Коментар  8000 MVI A,#81 3E,8l Завантажити в акумулятор код для програмування інтерфейса  8002 OUT#FB D3,FB Вивести вміст акумулятора на програмуючий порт інтерфейса  8004 Ml: IN#FA DB,FA Ввід у акумулятор стан перемикачів з порту #FA  8006 NOP 00 Порожні команди для резервування місця під інші команди  8007 NOP 00   8008 NOP 00   8009 OUT #F9 D3,F9 Вивід вмісту акумулятора на порт світло діодів  800В JMP M1 СЗ,04э80 Безумовний перехід. Замість мітки записується її адреса у вигляді: молодший байт, старший байт   Висновок: Вивчив структуру мікролабораторії і процесора. Ввів і виконав програму, яка вводить дані з перемикачів, обробляє їх та виводить на світлодіоди. Лабораторна робота №2 Тема: Складання простих програм на прикладі програмування звукових ефектів Мета: Написати програму, що створює гудки певної частоти, проекспериментувати з програмою і на основі результатів зробити висновки. Хід роботи У мікропроцесорній лабораторії гучномовець приєднано до молодшого біта порта світло-діодів. Якщо змінювати по послідовному каналу десятки разів на секунду стан молодшого біта порту з одиниці на нуль і навпаки, то в гучномовці буде звук певної частоти. Наприклад, нота «ля» 1-ої октави-це коливання фізичного тіла (камертон, струна) 440 раз в секунду, тобто 440 Гц. Програмним шляхом можна змінювати часові затримки між командами (імпульсами) і тим самим змінювати висоту звуку. Завдання Відтранслювати та виконати програму, яка видає гудок певної частоти. Знаки запитання у програмі означають довільний байт. Зірочками помічені команди, які треба поміняти для виконання наступного етапу. Результат Адреса Програма Код команди Коментар  8000 NOP 00 Зарезервоване місце  8001 NOP 00 Порожні команди  8002 MVI A, #81 3E, 81 Завантажити в акумулятор код для програмування інтефейсу  8004 OUT #FB D3, FB Вивести вміст акумулятора на програмний порт інтерфейсу  8006 M1: INR A DB, 3C Інвертування молодшого біта шляхом збільшення на одиницю  8007 MVI C, #FF 0E, FF Завантажити в регістр “С” період затримки між імпульсами, вираженими у часі виконання команд “DCR” та “JNZ”  8009 M2: DCR C 0D Зменшення лічильника циклів затримки на одиницю  800A JNZ M2 C2 Перехід на початок циклу  800D OUT #F9 D3, F9 Вивід молодшого біта акумулятора на гучномовець  800F NOP 00 Зарезервоване місце для подальших етапів роботи  8010 JMP M1 C3, 04, 80 Перехід на підготовку до виконання наступного імпульсу   Висновок: Написав програму, що створює гудки певної частоти, проекспериментував з програмою і переконався, якщо змінювати по послідовному каналу десятки разів на секунду стан молодшого біта порту з одиниці на нуль і навпаки, то в гучномовці буде звук певної частоти. Лабораторна робота №3 Тема: Робота з підпрограмами на прикладі програм знаходження добутку двох 8-бітних чисел Мета: Використовуючи програму для знаходження добутку двох 8-бітних чисел виконати наступні два завдання. Хід роботи У мікропроцесорі “КР580ИК80А” не існує операції множення чисел. Отже, коли треба знайти добуток двох чисел, треба використовувати підпрограми множення. Вам необхідно скласти таку підпрограму, встановлювати її, та виконати для двох прикладів, окремих для кожного студента. Вся необхідна інформація для складання програми знаходиться у роботах N1 та N2. Завдання1 Для даного алгоритму множення представити його кожний пункт однією командою на Асемблері. Завантажити #9 у лічильнику тактів множення; Обнулити регістри результату; Зменшити лічильник тактів; Повернутися з підпрограми, якщо результат дорівнює нулю; Зсув регістрів результату “HL” вліво, використовуючи команду подвійного додавання (HL:=HL+HL); Зсув першого множника вліво через прапорець переносу; Перехід до пункту 3, якщо немає переносу; До результату додати другий множник, використовуючи команду подвійного додавання; Перейти до пункту 3. Розподіл регістрів: A- перший множник; C- лічильник тактів; D- нульове значення; E- другий множник; HL - результат множення. Адреса Програма Коментар  8000 LX 1 B 01, 09 Завантажити #9 у лічильнику тактів множення  8001 00 00 Обнулити регістри результату;  8002 DCRC 0D Зменшити лічильник тактів  8003 RZ C8 Повернутися з підпрограми, якщо результат дорівнює нулю  8004 DAD H 29 Зсув регістрів результату “HL” вліво, використовуючи команду подвійного додавання (HL:=HL+HL);  8005 RLC 17 Зсув першого множника вліво через прапорець переносу  8006 JC D2 0280 Перехід до пункту 3, якщо немає переносу  8007 DAD D 19 До результату додати другий множник, використовуючи команду подвійного додавання  8008 JNC C3, 02, 80 Перейти до пункту 3   Завдання 2 Скласти по пунктах основну програму, яка звертається до підпрограми множення і розмістити її за адресою #8100: Завантажитти пеший множник командою “MVI”; Завантажити другий множник та регістр “D” командою “LXI”; Викликати підпрограму множення; Результат, отриманий у регістрах “H” (старша частина) і “L” (молодша частина), записати за вільною адресою, використовуючи команду “SHLD”; Зупинити процесор. Результат перевести у десяткову форму та перевірити. Адреса Програма Коментар  8100 MVI A 3E Завантаження першого множника  8101 DLXI 11 Завантаження другого множника та регістра D  8102 CAL L CD 0080 Виклик підпрограми  8103 SHLD 220082 Запис результату за вільною адресою   Висновок: Для даного алгоритму множення представив кожний пункт командою на Асемблері. Склав основну програму, яка звертається до підпрограми. Програма виконує множення двох доданків використовуючи операцію додавання. Лабораторна робота №4 Тема: Робота з прапорцями на прикладі програми ділення чисел. Мета: Використовуючи за приклад програму для ділення чисел, та прапорці, виконати наступне завдання. Завдання 1. В роботі необхідно скласти програму (алгоритм ділення приведено нижче), яка виконує ділення числа, завантаженого у регістр "L" на 8-бітне число, яке введене з клавіатури. Вся необхідна інформація для складання програми знаходиться в роботах №4,№5,№6. Алгоритм ділення: Прочитати з клавіатури дільник; Занести його в регістр "Е"; Завантажити в регістр "L" ділене; Завантажити в акумулятор код програмування інтерфейса для виводу на світлодіоди; Вивести його на програмуючий порт; Онулити регістр "В"; Онулити регістр "D"; Онулити регістр "НГ; Завантажити у "С" кількість тактів ділення: #8; Зсунути "HL" вліво; Переслати "H" в акумулятор; Відняти від "А" дільник; Якщо результат від'ємний - встановиться прапорець переносу, перейти до пункту 15; Інакше переслати результат віднімання у "Н"; Інвертувати біт переносу (CMC); Переслати в акумулятор вміст регістра "D"; Зсунути акумулятор через перенос вліво; Скопіювати акумулятор в регістр "D"; Зменшити лічильник тактів; Перехід, якщо не нуль, до пункту 10; Вивести результат ділення на порти світлодіодів; Організувати затримку результату на світлодіодах - зменшити 16-бітний регістр "ВС"; Переслати вміст "В" в акумулятор; Диз'юнкція з регістром "С"; Якщо не нуль, то перейти на цикл затримки - пункт 22; Перейти до прункту 1; 2.Після запуску програми отримати та перевірити результат, натискаючи на клавіші 1, 2Э З, 4, 5, 6, 7, 8, 9, А . Висновок: Використовуючи за приклад програму для ділення чисел, та прапорці, склав програму яка виконує ділення числа, завантаженого у регістр "L" на 8-бітне число, яке введене з клавіатури. Лабораторна робота №5 Тема: Операції над стеком. Мета: Необхідно написати програму яка методом перебору знаходить оптимальний хід для гри “Сірники”. Завдання У лабораторній роботі треба виконати програму, яка знаходить методом перебору найкращий хід в забавку "сірники", дотримуючись при виборі мінімаксної стратегії (розглядається в теорії ігор). Умова гри: машина і людина беруть по черзі сірники із загальної купи, за один раз можна брати від одного до трьох сірників, програє той, хто бере останній сірник. Вхідні дані до підпрограми: в акумуляторі - кількість сірників на N-му ході (задавати не більше #0F) Вихідні дані підпрограми: у регістрі "D" - оптимальна кількість взятих машиною сірників; в акумуляторі - значення функції виграшу. Константи підпрограми: у регістр "В" завантажується максимальна кількість сірників, яку можна взяти (задавати 3, 4, 5, 6). Підпрограма для знаходження оптимального ходу Кожний пункт співпадає з однією командою на асемблері. Підготувати регістри до процесу знаходження ходу: опустити у стек вміст регістрової пари «HL» Опустити у стек вміст регістрової пари «ВС». Звільнити акумулятор, переслати у «С» з «А» кількість сірників, яка є на столі. Підготувати початкові значення. Завантажити у «В» максимально можливу кількість сірників, яку будемо пробувати брати (див.умову). Завантажити у «Н» початкове значення функції виграшу, що дорівнює нулю. Головний процес (спроба ходу): переслати в акумулятор кількість сірників, яка є на столі (див. п.З). Відняти від вмісту акумулятора кількість сірників, яку спробуємо взяти. Перехід до п. 19, якщо результат від’ємний (встановився carry). Якщо результат віднімання дорівнює нулю, то взяли останній сірник, тобто програли – перехід до п.26. Порівняти результат з одиницею. Якщо при порівнянні отримали нуль, то виграли – перехід до п.28. Знайти оптимальний хід та значення функції виграшу для противника (рекурсивний виклик цієї підпрограми). Інвертувати отриману функцію виграшу противника. Збільшити результат на одиницю з метою переводу у від’ємне число. Перевірити, чи зроблений хід кращий за попередні: порівняти результат з максимальним значенням функції виграшу у «Н «. Перехід до п. 19, якщо цей хід не кращий (Н>А). Подія: знайшли нове максимальне значення функції виграшу, яке треба зберегти в «Н». Запам’ятати в «L» кількість сірників, що спробували брати, і яка привела до кращого ходу Продовження перебору ходів: зменшуємо кількість сірників, яку будемо пробувати брати (вміст «В»). Якщо результат зменшення не нуль, то повторити процес з п.6; Інакше підготуватись до виходу з підпрограми: витягнути зі стека регістрову пару «ВС». Переслати знайдене максимальне значення функції виграшу в акумулятор. Переслати . в «D» кількість сірників, яка відповідає знайденому максимальному значенню функції виграшу. Витягнути зі стека регістрову пару «HL». Повернутись з підпрограми. Програв: встановити в акумуляторі значения функції виграшу, яке дорівнює #81. Продовжувати пошук. Перейти до п. 15. Виграв: підготуватись до закінчення пошуку ходу – завантажити в»Н» максимальне значення функції виграшу, яке дорівнює #83. Переслати в «L» кількість взятих сірників, що привели до виграшу. Перейти до закінчення пошуку – п.21. Головна програма Завантажити в акумулятор кількість сірників, що залишились на столі після: N-ro ходу. Знайти оптимальний хід (викликати підпрограму). Підготуватись до виводу ходу – завантажити у акумулятор код програмування інтерфейсу. Запрограмувати інтерфейс для виводу на світлодіоди. З регістра «D» переслати у акумулятор кількість взятих програмою сірників (оптимальний хід). Вивести отримане значення на світлодіоди. Зупинити процесор. Висновок: Написав програму яка методом перебору знаходить оптимальний хід для гри “Сірники”. Лабораторна робота №6 Тема: Обмін даними через пам'ять. Мета: Використовуючи нижче подану демонстраційну програму перебирання сегментів, написати програму яка б виводила певну букву. Обмін інформацією між мікропроцесорною системою та зовнішнім середовищем може здійснюватись не лише через інтерфейс вводу-виводу, а й через оперативну пам’ять. Таким чином, під час запису даних у деякі комірки пам’яті інформація одночасно може потрапляти і на пристрій вводу-виводу. У складних мікропроцесорних системах функцію передачі даних між системою і зовнішнім пристроєм, локальною мережею або іншою мікропроцесорною системою здійснює контролер прямого доступу до пам’яті, який працює паралельно з процесором. У лабораторній роботі також є можливість здійснювати вивід через пам’ять, але без допомоги контролера ПДП. Пристроєм виводу є цифрові індикатори, звернутися до будь-якого з індикаторів можна через комірки за адресою #83F8-#83FF. Кожен індикатор має вісім окремих сегментів, які світяться залежно від даних, які записані у вказані комірки. Стан сегменту залежного від стану відповідного біта даних. У процесі роботи потрібно запустити програму, та визначити, за який сегмент відповідає кожен біт. Після цього потрібно вивести дві букви на два довільних індикатори, використовуючи команди "MV1 М "безпосереднє завантаження комірки пам’яті, адреса якої знаходиться у регістровій парі "НL.". Можливо також використати команду "STA'' прямий запис акумулятора у пам’ять за адресою яка вказана після команди. У кожного студента повинен бути свій варіант букв. Можливі букви: G,H,J,L,P,Q,U,B,r,n,y,b. ДЕМОНСТРАЦІЙНА ПРОГРАМА ПЕРЕБИРАННЯ СЕГМЕНТІВ: Адреса Програма Коментар  8000 MVI С,#00 Завантажити в регістр С  8002 M3: MVI В,#07 Завантажити в В константу, що засвічує сегменти  8004 LXI H,#83F8 Завантажити в регістрову пару HL адресу комірки  8007 МІ: МОV А, С Переслати в акумулятор вміст регістра C  8008 RLC Зсув акумулятора вліво  8009 MOV С, А Переслати в регістр C вміст акумулятора  800А MOV М, А Переслати байт з акумулятора в комірку пам’яті  800В ІNX H Збільшити на одиницю вміст регістрової пари HL  800С LXI D,#OFFF Завантажити в регістрову пару DE адресу комірки  800F M2: DCX D Зменшити на одиницю вміст регістрової пари DE  8010 MOV A, D Переслати в акумулятор вміст регістрової пари DE  8011 ORA E Диз'юнкція з регістром "E"  8012 JNZ M2 Якщо не нуль, то перейти на мітку M2  8015 DCR В Вміст регістрової пари BC зменшити на одиницю  8016 JNZ M1 Якщо не нуль, то перейти на мітку M1  8019 JMP M3 Безумовний перехід   ПРОГРАМА, ЩО ВИВОДИТЬ БУКВУ НА ІНДИКАТОР Адреса Програма Коментар  8100 M2: MVI A,#7D Завантажити в акумулятор константу, що засвічує сегменти  8102 STA #83FA Прямий запис акумулятора у пам’ять за адресою  8105 LXI D,#0FFF Завантажити в регістрову пару DE адресу комірки  8108 МІ: DCX D Зменшити на одиницю вміст регістрової пари DE  8109 MOV А,D Переслати в акумулятор вміст регістрової пари DE  810A ORA E Диз'юнкція з регістром "E"  810B JNZ M1 Якщо не нуль, то перейти на мітку M1  810E JMP M2 Безумовний перехід   Результати роботи Щоб вивести на індикатор за адресою #83FA букву G, необхідно на початку завантажити в акумулятор константу 7D. Щоб вивести на індикатор за адресою #83FB букву Q, необхідно на початку завантажити в акумулятор константу BF. A G   F B E C D H 7 6 5 4 3 2 1 0          H G F E D C B A Буква G висвітлюється на індикаторі, коли в сегментах A, C, D, E, F, G – 1. 0 1 1 1 1 1 0 1   0111 1101 => 7D Буква Q висвітлюється на індикаторі, коли в сегментах A, B, C, D, E, F, H – 1. 1 0 1 1 1 1 1 1   1011 1111 => BF Висновок: Використовуючи нижче подану демонстраційну програму перебирання сегментів, написав програму яка б виводила певну букву.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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