- •Завдання 1
- •5. Завдання 2
- •1. Структура еом
- •2. Подання даних у моделі
- •3. Система команд
- •Формати команд
- •Способи адресації
- •3.3. Система операцій
- •4. Стани і режими роботи еом
- •5. Інтерфейс користувача
- •5.1. Вікна основних оглядачів системи Вікно Процессор
- •010 Nop ооадоо
- •6. Зовнішні пристрої
- •Інструктаж з техніки безпеки при роботі з пк
- •Інструктаж з техніки безпеки при роботі з пк
- •Інструктаж з техніки безпеки при роботі з пк
- •Робота з індикатором hg1.
- •5. Робота з індикатором ны0.
- •6. Індикатор нс7.
Інструктаж з техніки безпеки при роботі з пк
Завантажити програму СотрМойеІ.
Ознайомитися з постановкою задачі, використовуючи теоретичні відомості, наведені в додатку 1.
Завдання 1. Програмування циклу з переадресацією.
4.1. Записати в ОЗП програму, використовуючи вікно Текст программы.
Адреса |
Команда |
Примітка |
000 |
RD #40 |
Завантаження початкової адреси масиву 040 в комірку 030 |
001 |
WR ЗО |
|
002 |
RD #10 |
Завантаження параметра циклу к = 10 в комірку 031 |
003 |
WR 31 |
|
004 |
RD #0 |
Завантаження початкового значення суми Б = 0 в комірку 032 |
005 |
WR32 |
|
006 |
Ml: RD 32 |
Додавання до поточної суми чергового елемента масиву |
007 |
ADD @30 |
|
008 |
WR 32 |
|
009 |
RD ЗО |
Модифікація поточної адреси масиву (перехід до наступної адреси) |
010 |
ADD #1 |
|
011 |
WR 30 |
|
012 |
RD 31 |
Зменшення лічильника (параметра циклу) на 1 |
013 |
SUB #1 |
|
014 |
WR 31 |
|
015 |
JNZM1 |
Перевірка параметра циклу і перехід при к Ф 0 |
016 |
RD 32 |
Вивід результату |
017 |
OUT |
|
018 |
HLT |
Стоп |
Зберегти набрану програму у вигляді текстового файлу с розширенням .asm і зробити асемблювання мнемокодов.
Виконати в режимі Шаг введену послідовність команд, фіксуючи зміни значень об'єктів, що беруть участь при виконанні завдання, у таблиці.
5. Завдання 2. Підпрограми і стек
5.1. Записати в ОЗП програму, використовуючи вікно Текст программы.
Команда |
Примітки |
Основна програма |
|
RD #85 |
Завантаження параметрів першого масиву |
WRR1 |
|
RD #14 |
|
WRR2 |
|
CALL М |
Виклик підпрограми |
WR R6 |
Збереження результату |
RD #100 |
Завантаження параметрів другого масиву |
WR R1 |
|
RD #4 |
|
.WRR2 |
|
CALL М |
Виклик підпрограми |
WRR7 |
Збереження результату |
RD #110 |
Завантаження параметрів третього масиву |
WRR1 |
|
RD #9 |
|
WRR2 |
|
CALL М |
Виклик підпрограми |
ADDR7 |
Обчислення середнього арифметичного |
ADDR6 |
|
DIV #3 |
|
OUT |
Вивід результату |
Підпрограма МАХ |
|
HLT |
Стоп |
М: RD (й)Д1 |
Завантаження першого елемента в R3 |
WRR3 |
|
L2: RD (®Д1+ |
Читання елемента і модифікація адреси |
WRR4 |
Порівняння і заміна, якщо R3 < R4 |
SUBR3 |
|
JS LI |
|
MOV R3,R4 |
|
LI: JRNZ R2,L2 |
Цикл |
RDR3 |
Читання результату в Асс |
RET |
Повернення |
Зберегти набрану програму у вигляді текстового файлу і зробити асемблювання мнемокодів.
Виконати в режимі Шаг введену послідовність команд, фіксуючи зміни значень об'єктів, що беруть участь при виконанні завдання, у таблиці.
5. Підготувати звіт про виконання роботи
з
Зміст звіту
Тема роботи і її мета.
Формулювання завдань.
Машинні коди команд, що відповідають номеру завдання.
Результати виконання послідовності команд всіх завдань у таблицях.
Відповіді на контрольні питання.
Контрольні питання
Як організувати цикл у програмі?
Що таке параметр циклу?
Як працює команда MOV R3, R7?
Які дії виконує процесор при реалізації команди CALL?
Додаток 1
Завдання № 1. Програмування циклу з переадресацією
При рішенні завдань, пов'язаних з обробкою масивів, виникає необхідність зміни виконавчої адреси при повторному виконанні деяких команд. Це завдання може бути вирішена шляхом використання непрямої адресації.
Розробити програму обчислення суми елементів масиву чисел Су, С2, ..., С„. Вихідними даними в цьому завданні є: п - кількість підсумуємих чисел і Сі, С2,.-, С» - масив підсумуємих чисел. Помітимо, що повинне виконуватися умова п > 1, т. к. алгоритм передбачає, принаймні, одне підсумовування. Крім того, передбачається, що підсумуєми числа записані в ОЗП підряд, тобто в комірки пам'яті з послідовними адресами. Результатом є сума 5".
Складемо програму для обчислення суми з наступними конкретними параметрами: число елементів масиву - 10, елементи масиву розташовані в комірках ОЗП по адресах 040, 041, 042, ..., 049. Використовувані для рішення завдання проміжні змінні мають наступний сенс: А1 — адреса числа С„ і є {1, 2,..., 10}; ОЗУ( А і) - число за адресою Аь 5 - поточна сума; к - лічильник циклу, що визначає число повторень тіла циклу.
Розподіл пам'яті таке. Програму розмістимо в комірках ОЗП, починаючи з адреси 000, зразкова оцінка обсягу програми - 20 команд; проміжні змінні: Аі - в комірці ОЗП з адресою 030, к - за адресою 031, £ - за адресою 032.
Блок-схема алгоритму Завдання № 2. Підпрограми і стек
У програмуванні часто зустрічаються ситуації, коли однакові дії необхідно виконувати багаторазово в різних частинах програми (наприклад, обчислення функції sin х). При цьому з метою економії пам'яті не слід багаторазово повторювати ту саму послідовність команд - досить один раз написати так звану підпрограму (у термінах мов високого рівня - процедуру) і забезпечити правильний виклик цієї підпрограми і повернення в крапку виклику по завершенню підпрограми.
Для виклику підпрограми необхідно вказати її початкову адресу в пам'яті і передати (якщо необхідно) параметри - ті вихідні дані, з якими будуть виконуватися передбачені в підпрограмі дії. Адреса підпрограми вказується в команді виклику CALL, а параметри можуть передаватися через певні комірки пам'яті, регістри або стік.
Повернення в крапку виклику забезпечується збереженням адреси поточної команди (умісту регістра PC) при виклику і використанням наприкінці підпрограми команди повернення RET, що повертає збережене значення адреси повернення в PC.
Для реалізації механізму вкладених підпрограм (можливість виклику підпрограми з іншої підпрограми і т.д.) адреси повернення доцільно зберігати в стеці. Стік ("магазин") - особливим образом організована безадресна пам'ять, доступ до якої здійснюється через єдину комірку, називаний верхівкою стека. При записі слово міститься у верхівку стека, попередньо всі слова, що перебувають у ньому, зміщаються долілиць на одну позицію; при читанні витягає вміст верхівки стека (воно при цьому зі стека зникає), а всі слова, що залишилися, зміщаються нагору на одну позицію. Такий механізм нагадує дія магазина стрілецької зброї (звідси і друга назва). У програмуванні називають таку дисципліну обслуговування LIFO (Last In First Out, останнім прийшов — першим вийшов) на відміну від дисципліни типу черга — FIFO (First In First Out, першим прийшов — першим вийшов).
У звичайних ОЗП немає можливості переміщати слова між комірками, тому при організації стека переміщається не масив слів щодо нерухливої верхівки, а верхівка щодо нерухливого масиву. Під стек приділяється деяка область ОЗП, причому адреса верхівки зберігається в спеціальному регістрі процесора - покажчику стека SP.
У стек можна помістити вміст регістра загального призначення по команді PUSH або витягти вміст верхівки в регістр загального призначення по команді POP. Крім того, по команді виклику підпрограми CALL значення програмного лічильника PC (адреса наступної команди) міститься у верхівку стека, а по команді RET уміст верхівки стека витягає в PC. При кожному обігу в стек покажчик SP автоматично модифікується.
У більшості ЕОМ стік "росте" убік менших адрес, тому перед кожним записом уміст SP зменшується на 1, а після кожного добування вміст SP збільшується на 1. Таким чином, SP завжди вказує на верхівку стека.
У процесі організації циклів будемо використовувати можливості системи команд моделі ЕОМ, які дозволяють працювати з понадоперативної пам'яттю (регістри загального призначення - РЗН). У реальних ЕОМ доступ у РЗН займає значно менший час, чим в ОЗП; крім того, команди обігу з регістрами коротше команд звертання до пам'яті. Тому в РЗН розміщаються найбільше часто використовувані в програмі дані, проміжні результати, лічильники циклів, непрямі адреси і т.п.
У системі команд навчальної ЕОМ для роботи з РЗН використовуються спеціальні команди, мнемоніки яких збігаються із мнемоніками відповідних команд для роботи з ОЗП, але в адресній частині містять символи регістрів R0-R9.
Крім звичайних способів адресації (прямій і непрямої) у регістрових командах використовуються два нових - постінкрементна і преддекрементна. Крім того, до регістрового ставиться команда організації циклу JRNZ R,M. По цій команді вміст зазначеного в команді регістра зменшується на 1, і якщо в результаті вирахування вмісту регістра не дорівнює 0, то керування передається на мітку М. Цю команду варто ставити наприкінці тіла циклу, мітку М - у першій команді тіла циклу, а в регістр R поміщати число повторень циклу.
Дано три масиви чисел. Потрібно обчислити середнє арифметичне їхнього максимального елементів. Кожний масив задається двома параметрами: адресою першого елемента і довжиною.
Очевидно, у програмі тричі необхідно виконати пошук максимального елемента масиву, тому варто написати відповідну підпрограму.
Параметри в підпрограму будемо передавати через регістри: R1 - початкова адреса масиву, R2 - довжина масиву.
Розглянемо конкретну реалізацію цього завдання. Нехай перший масив починається з адреси 085 і має довжину 14 елементів, другий - 100 і 4, третій - 110 і 9. Програма буде складатися з основної частини і підпрограми. Основна програма задає параметри підпрограмі, викликає її і зберігає результати роботи підпрограми в робочих комірках. Потім здійснює обчислення середнього арифметичного і виводить результат на пристрій виводу. Як робочі комірки використовуються регістри загального призначення R6 і R7 - для зберігання максимальних елементів масивів. Підпрограма одержує параметри через регістри R1 (початкова адреса масиву) і R2 (довжина масиву). Ці регістри використовуються підпрограмою як регістр поточної адреси і лічильника циклу відповідно. Крім того, R3 використовується для зберігання поточного максимуму, a R4 - для тимчасового зберігання поточного елемента. Підпрограма повертає результат через акумулятор. Цикл у підпрограмі організований з по міццю команди JRNZ, а модифікація поточної адреси - засобами постінкрементної адресації.
ЛАБОРАТОРНА РОБОТА № З
Тема: Командний цикл процесора
Мета: вивчення дій командного циклу на рівні мікрокоманд.
Забезпечення: комп'ютер, модель навчальної ЕОМ СотрМоїШ.
Реалізація програми в ЕОМ зводиться до послідовного виконання команд. Кожна команда, у свою чергу, виконується як послідовність мікрокоманд, що реалізовують елементарні дії над операційними елементами процесора.
У програмній моделі навчальної ЕОМ передбачений Режим микрокоманд, у якому дія командного циклу реалізується і відображається на рівні мікрокоманд. Список мікрокоманд поточної команди виводиться в спеціальному вікні Микрокомандный уровень.
Хід роботи
