Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Виконання машинних команд






План

1 Компіляція та інтерпретація алгоритмічної програми

2 Багаторівнева ієрархія мов ЕОМ

3 Формати команд

4 Способи адресації

5 Організація підпрограми

6 Виконання машинних команд

6.1 Вибірка команди

6.2 Вибірка адреси

6.3 Виконання операції

 

 

1 У цей час більшість користувачів ЕОМ починає спілкування з машиною на одній з алгоритмічних мов (Паскалі, Бейсіку, Сі/Сі ++ і т.п.), вважаючи, що така мова є мовою машини. Однак апаратна реалізація ЕОМ з алгоритмічними машинними мовами досить складна й дорога. Тому машинні мови майже всіх ЕОМ досить примітивні, що робить безпосереднє використання таких мов незручним. Можливість же виконання на ЕОМ програми, написаної алгоритмічною мовою, забезпечується за допомогою спеціальних системних програм (компіляторів або інтерпретаторів), що здійснюють переклад користувальницьких програм на машинну мову ЕОМ.

Існують два способи організації процесу переводу програми з алгоритмічної на машинну мову й процесу її виконання.

Перший спосіб, що одержав назву компіляції, полягає в тім, що процес виконання алгоритму здійснюється лише після завершення процесу перекладу вихідної програми. При цьому в процесі виконання отриманої в результаті перекладу машинної програми вже не потрібна не тільки вихідна програма, але й програма-компілятор, що здійснила переклад у машинне подання.

Другий спосіб, що одержав назву інтерпретації, полягає в тому, що кожен оператор вихідної програми замінюється програмою-інтерпретатором на еквівалентну послідовність машинних команд, послідовність відразу виконується, після чого переводиться наступний оператор вихідної програми, реалізуються отримані при його перекладі команди й т.д. Отже, під час рішення завдання машині потрібні й вихідна програма, і програма-інтерпретатор.

 

2 Витрати на створення компілятора (інтерпретатора) і час на процес перекладу програми значною мірою визначаються подібністю компілюємої й одержаної мов. Тому розповсюджені алгоритмічні мови й більш складні мови програмних систем не відразу переводять на мову машинних команд. Існує певна ієрархія мов програмування, у якій наступна більш складна мова базується на попередній.

Одна з найпростіших мов, що дуже близька до команд ЕОМ й є мовою символічного кодування, називається мовою асемблера. Мови асемблерів (розроблені для кожного типу ЕОМ) - це перші засоби автоматизації програмування в обчислювальній техніці. У них допускається використання символічних імен і міток (адрес). Компілятори c таких мов відводять певні комірки пам'яті для символічних змінних, організують зв'язки між різними частинами програми, що різко полегшує програмування в порівнянні c програмуванням на рівні команд.

Можливість реалізації на будь-якій ЕОМ програм, написаних на мовах, що відрізняються від її машинної мови, зайвий раз підкреслює універсальність ЕОМ.

Людина, що працює з ЕОМ на тій або іншій мові, може не знати, чи виконується його програма крок за кроком інтерпретатором, що, у свою чергу, виконується іншим інтерпретатором, або ж вона здійснюється безпосередньо апаратними засобами (його звичайно цікавить лише результат виконання програми). Найчастіше йому здається, що мова, на якій він спілкується c ЕОМ, - це її машинна мова. Отже, різним користувачам однієї й тієї ж ЕОМ може здаватися, що вони працюють на різних обчислювальних машинах. Звідси з'явилися поняття: віртуальна ЕОМ і багаторівнева ЕОМ.

Багаторівнева ЕОМ - це обчислювальна машина, що має засоби для роботи з n різними рівнями мов програмування (рис. 31.1). Нижня мова, або рівень, є найбільш простим, верхній - найбільш складним. Таку машину можна розглядати як n різних віртуальних машин, кожна з яких має свою машинну мову. Складність апаратурної реалізації цих віртуальних машин зростає в міру ускладнення мови (збільшення номера рівня).

       
 
 
   
Рис. 31.1. Багаторівнева ЕОМ

 


Керування порядком проходження мікрооперацій здійснюється за допомогою пристрою керування ЕОМ, що, у свою чергу, є дуже простим ЕОМ. Для цієї ЕОМ регістри й вентильні схеми (ключові схеми для керування потоком інформації між регістрами й шинами) служать як би пристроями вводу й виводу. Програма роботи мікропрограмного пристрою керування (МПК) називається мікропрограмою, а її команди, що містять інформацію про елементарні дії, що підлягають виконанню протягом одного робочого такту ЕОМ, - мікрокомандами.

Мікропрограма зберігається в постійному запам'ятовувальному пристрої - пам'яті мікрокоманд (ПМ). У кожному такті роботи ЕОМ із ПМ у регістр мікрокоманд пересилається чергова мікрокоманда, тобто мікрокоманда, що вказує лічильник мікрокоманд (він же регістр адреси мікрокоманд). Потім лічильник мікрокоманд збільшується на одиницю.

Якщо з пам'яті обрана операційна мікрокоманда, біти якої визначають потрібний набір мікрооперацій, то стан цих бітів передається на вентильні схеми процесора. Створюється відповідне настроювання АЛП (на підсумовування, логічне множення, інвертування й т.п.) і пересилання через нього вмісту одних регістрів в інші регістри.

При вибірці керуючої мікрокоманди в пристрій керування МПК пересилається вміст зазначеного в мікрокоманді регістра ЕОМ, з нього виділяється зазначений у мікрокоманді біт і рівняється з певним бітом мікрокоманди (з 0 або 1). Якщо результат порівняння позитивний, то в лічильник мікрокоманд пересилається з мікрокоманди адреса, по якому повинна вибиратися наступна мікрокоманда мікропрограми, у противному випадку ніяких пересилань не відбувається й у наступному такті буде виконуватися мікрокоманда, розташована слідом за тою, що виконується.

Варто ясно представляти, що в описуваній тут мікропрограмувальній ЕОМ є дві пам'яті, два набори команд і дві програми: традиційного машинного рівня (команди Асемблера) і мікропрограмного рівня. Однак апаратно реалізований процесор тільки один, а архітектура машини формує мікропрограмний рівень.

Домашнє завдання:

[5] С. 76-79

3 Кожна ЕОМ здатна розуміти й виконувати певний набір команд. Залежно від того, до яких блоків машини звертається команда при виконанні, їх можна розділити на 3 групи:

а) команда звертання до пам'яті (адресна);

б) команда звертання до регістрів (регістрова або безадресна);

в) команда вводу-виводу (звертання до периферійних пристроїв).

Адресні команди (рис. 32.1, а) наказують машині виконувати дії із змістом осередку пам'яті, адреса якої зазначена в адресній частині команди. Наприклад, команда ADD 20 (табл. 32.1) наказує машині звертання за адресою 20 і використання вмісту цього осередку в якості першого операнда. Другий операнд перебуває в акумуляторі й ці два операнда складаються.

Безадресні команди (рис. 32.1, б) виконують дії без звертання до осередків пам'яті. Наприклад, команди CLA й HLT.

Команди звертання до пристроїв вводу/виводу (рис. 32.1, в) здійснюють обмін даними між ЕОМ і зовнішніми пристроями. У них задається адреса пристрою вводу/виводу й код операції, яку повинен виконати пристрій.

       
   
 
а)
 
 
   
 
б)
 
 
   
 
в)
 

 

 


 

Розглянемо, наприклад, 16-бітові (однослівні) формати команд з 4-бітовим кодом операції, за допомогою якого можна закодувати не більш, ніж 16 різних операцій (24). Два коди 1110 та 1111 відведені на команди вводу/виводу та безадресні команди, а так як в цих командах або використовується менша адресна частина (8-бітовий адрес пристрою вводу/виводу на рис. 32.1, в), або цієї частини взагалі немає (рис. 32.1, б), то з’явилась можливість мати до 24 = 16 команд вводу/виводу (4-бітовий наказ на ввід/вивід) та до 212 = 4096 безадресних команд (12-бітове розширення коду операції).

 

4 В командах звертання до пам’яті на адресу відведено 1 біт, що дозволяє здійснити пряму адресацію всіх 2048 (211) осередків пам’яті ЕОМ. Але зустрічаються програми, коли в команді краще розміщати не саму адресу операнду (результату або переходу), а його вказівник, тобто осередок пам’яті, в якій зберігається адреса операнду (результату або переходу). Така непряма адресація спрощує побудову циклічних програм, організацію роботи з підпрограмами, а також створює умови для розширення адресуємого простору (непряма адресація 16-бітових осередків ЕОМ дозволяє їй мати пам’ять обсягом до 216 = 65536 слів).

ADD 25
а)

   
 
 
 

 


б)

 

 

       
   
 
 

 


Для вказівки виду адресації в командах використовується біт з номером 11 (рис. 32.1, а), в якому при прямій адресації записаний 0, а при непрямій – 1. В символьних (мнемонічних) зображеннях команд для вказівки непрямої адресації операнд поміщають у дужки. Так на рис. 32.2 команда ADD 25 або 4025 вказує, що із осередку 25 треба взяти число (53), яке необхідно скласти із вмістом акумулятора. Команда ADD (25) або 4825 вказує, що із осередку 25 повинна бути взята адреса осередку (53), в якій зберігається число (47), яке необхідно скласти із вмістом акумулятора.

 

5 Досить часто зустрічається ситуація, коли окремі частини програми повинні виконувати одні й ті самі дії по обробці даних (наприклад, обчислення тригонометричної функції). У подібних випадках повторювані частини програми виділяють у підпрограму, а у відповідні місця програми заносять лише команди звертання до цієї підпрограми. Для цього використовується команда JSR.

Осередок, що використовується для розміщення адреси повернення із підпрограми
На рис. 32.3 показана частина основної програми, що містить дві команди JSR 300, за допомогою яких здійснюється перехід до виконання команд підпрограми.

 

 
 

 


По команді JSR 300, розташованої в осередку 25, виконується запис числа 25+1=26 в осередок з адресою 300 і перехід до першої виконуваної команди підпрограми, розташованої в осередку 301. Далі починається процес виконання команд підпрограми, що завершується на команді BR (300), розташованої в осередку 326. Це команда безумовного переходу з непрямою адресацією. Вона пропонує ЕОМ виконати перехід до команди, розташованої за адресою, що зберігається в осередку 300. Тому як в цей осередок раніше було занесене число 26, то буде виконуватися команда, записана в осередку 26, тобто наступна за звертанням до підпрограми.

По команді JSR 300, розташованої в осередку 72, здійснюється запис числа 72+1=73 в осередок з адресою 300 і починається виконання підпрограми (з осередку 301). При виконанні останньої команди підпрограми BR (300) буде здійснений перехід до команди, розташованої за адресою 73, тобто адресі, збереженому в осередку 300.

Таким чином, при оформленні підпрограми перед першою її командою варто розмістити осередок, у яку буде пересилатися адреса повернення з підпрограми. У звертанні до підпрограми вказується адреса саме цього осередку, і команда JSR М виконує наступні дії:

1) поміщає в осередок М адресу наступної за JSR М команди, тобто команди, що повинна виконуватися слідом за командами підпрограми;

2) передає з команді, розташованої в осередку з адресою М+1.

Останньою виконуваною командою підпрограми повинна бути команда виходу, тобто команда BR (М), по якій здійснюється перехід до команди з адресою, збереженою в осередку М.

Задача 1. Записати програму обчислення суми двох чисел: 53 та 106. Адреса першого осередку пам’яті, де записана програма – 20. Записати програму за допомогою 16-річних кодів.

 

Осередки пам’яті Коментарі
Адреса Вміст
  CLA ADD 20 ADD 21 MOV 22 HLT Перше число Друге число Осередок, призначений для результату Акумулятор містить 0000 (очищення) Акумулятор містить 53 Акумулятор містить 159 (53+106) В осередок з адресою 22 записується 159 Зупинка машини

 

 

Осередок Вміст
  F200 F000

 


Таблиця 32.1 Система команд мови Асемблер

 

Найменування Мнемоніка Код Опис
Адресні команди
Логічне множення AND M 1XXX (М) & (A) ¦ A
Пересилання MOV M 3XXX (A) ¦ M
Додавання ADD M 4XXX (M) + (A) ¦ A
Додавання з переносом ADC M 5XXX (M) + (A) + (C) ¦ A
Віднімання SUB M 6XXX (A) – (M) ¦ A
Перехід, якщо перенос BCS M 8XXX Якщо (С) = 1, то М ¦ ЛК
Перехід, якщо плюс BPL M 9XXX Якщо (А) ³ 0, то М ¦ ЛК
Перехід, якщо мінус BMI M AXXX Якщо (А) < 0, то М ¦ ЛК
Перехід, якщо нуль BEQ M BXXX Якщо (А) = 0, то М ¦ ЛК
Безумовний перехід BR M CXXX М ¦ ЛК
Приріст і пропуск ISZ M DXXX (М) + 1 ¦ M; якщо (М)³ 0, то (ЛК) + 1 ¦ ЛК
Звертання до підпрограми JSR M 2XXX (ЛК) ¦ М; М + 1 ¦ ЛК
Безадресні команди
Очищення акумулятора CLA F200 0 ¦ А
Очищення регістра переносу CLC F300 0 ¦ С
Інверсія акумулятора CMA F400 ()¦ А
Інверсія регістра переносу CMC F500 ()¦ С
Циклічний зсув ліворуч на 1 розряд ROL F600 Зміст А та С зрушується ліворуч, А(15)¦С та С¦А(0)
Циклічний зсув праворуч на 1 розряд ROR F700 Зміст А та С зрушується праворуч, А(0)¦С та С¦А(15)
Інкремент акумулятора INC F800 (А) + 1 ¦ А
Декремент акумулятора DEC F900 (А) – 1 ¦ А
Зупинка HLT F000  
Немає операції NOP F100  
Дозвіл переривання EI FA00  
Заборона переривання DI FB00  
Команди вводу/виводу
Очищення прапору CLF B E0XX 0 ¦ Прапор пристрою В
Запит прапору TSF B E1XX Якщо Прапор пристрою В дорівнює 1, то (ЛК) + 1 ¦ ЛК
Ввід IN B E2XX (В) ¦ А
Вивід OUT B E3XX (А) ¦ В
Умовні позначення
(М), (А), (ЛК), (С), (В) – зміст осередку пам’яті з адресом М, акумулятора, лічильника команд, регістра переносу та регістра даних, пристрою вводу/виводу з адресом В; ХХХ – адреса осередку пам’яті; ХХ – адреса пристрою вводу/виводу.

 

Домашнє завдання:

[5] С. 37-40


6 Час, що затрачується на одержання працездатної програми ЕОМ, різко скорочується, якщо програміст добре представляє, як виконуються окремі машинні команди, і використовує ці знання при налагодженні програми.

В процесі виконання машинних команд пристрій керування ЕОМ робить аналіз і пересилку команди, окремих її частин (коду операції, ознаки адресації й адреси) або операнда з одного регістра машини в інший її регістр, АЛП, пам'ять або пристрій вводу-виводу.

Ці дії (мікрооперації) протікають у певній часовій послідовності й скоординовані між собою. Для створення часової послідовності використовується генератор тактових імпульсів (імпульсів із частотою в декілька МГЦ).

Цикл команди. Для реалізації однієї команди потрібно виконати певну кількість мікрокоманд, кожна з яких ініціює одночасне здійснення однієї або декількох мікрооперацій за час одного робочого такту ЕОМ. Загальне число тактових імпульсів (мікрокоманд), необхідних для виконання команди, визначає час її виконання, називаним циклом команди (рис. 33.1). Цикл команди звичайно включає один або кілька машинних циклів.

       
   
 
Тактові імпульси
 

 

 


 
 

 

 


Пристрій керування базової ЕОМ може перебувати в чотирьох можливих станах: вибірки команди, вибірки адреси, виконання й переривання. Тривалість кожного із цих чотирьох станів визначає час виконання відповідного машинного циклу. Кожен машинний цикл призначений для певної мети.

 

6.1 Вибірка команди. У даному машинному циклі виконуються читання команди з пам'яті, її часткове декодування й іноді виконання (для безадресних команд і команд вводу-виводу, що є одноцикловими командами):

1) зміст осередку пам’яті, на яке вказує лічильник команд, записується з пам’яті в регістр даних;

2) зміст лічильника команд збільшується на одиницю;

3) зміст регістра даних пересилається в регістр команд, код операції команди частково декодується для з'ясування типу команди (адресна, безадресна або вводу-виводу), аналізується біт ознаки адресації й відбувається підготовка ланцюгів, необхідних для виконання команди;

4) якщо обрано адресну команду, то здійснюється перехід до мікрокоманд наступного машинного циклу; у противному випадку виконуються дії по завершенню одноциклової команди.

 

6.2 Вибірка адреси. Цей стан (цей машинний цикл) йде за вибіркою команди для адресних команд із непрямою адресацією (біт виду адресації дорівнює одиниці). Стан використовується для читання адреси операнда (адреси результату або переходу) з пам'яті й складається з наступних кроків:

1) адресна частина команди пересилається з регістра даних (де поки ще зберігається копія команди) у регістр адреси;

2) зміст осередку пам'яті, що вказується регістром адреси, читається в регістр даних; тепер у цьому регістрі перебуває адреса операнда (адреса результату або переходу), що буде використовуватися при виконанні команди (у циклі виконання);

3) зміст регістра даних збільшується на одиницю;

4) змінений зміст регістра даних пересилається в осередок пам'яті за адресою, що вказується регістром адреси;

5) зміст регістра даних зменшується на 1.

 

6.3 Виконання. Послідовність дій, що виконуються у цьому циклі, визначається типом виконуваної адресної команди.

а) для команд, при виконанні яких потрібна вибірка операнда з пам'яті ЕОМ (AND, ADD, ADC, SUB, ІSZ), стан виконання використовується для читання операнда в регістр даних і виконання операції, що вказується кодом операції команди;

б) по команді пересилання (MOV) у цьому машинному циклі виконується запис змісту акумулятора в осередок пам'яті з адресою, розташованою в регістрі даних, для чого зміст регістра даних пересилається в регістр адреси, а зміст акумулятора - у регістр даних і далі в осередок пам'яті, що вказується регістром адреси;

в) при виконанні команд переходів (BCS, BPL, BMІ, BEQ) виконується перевірка відповідної умови (1 у регістрі переносу, 0 у знаковому розряді акумулятора й т.п.) і пересилання адреси з регістра даних у лічильник команд при виконанні цієї умови. Якщо виконується команда безумовного переходу (BR), то пересилання адреси переходу в лічильник команд здійснюються без якої-небудь перевірки.

Отже, при виконанні умови, обумовленого кодом операції команди, або при виконанні команди BR наступною буде вибиратися команда з осередку пам'яті з адресою, розташованою в регістрі даних (адресою, розташованою у виконуваній команді або обраною з осередку, на яку вказує ця адреса). У противному випадку буде обрана команда, розташована слідом за виконуваною;

г) для команди звертання до підпрограми (JSR) під час цього машинного циклу здійснюються пересилання вмісту лічильника команд в осередок пам'яті, адреса якої знаходиться в регістрі даних, і занесення в лічильник команд збільшеного на одиницю вмісту регістра даних.

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

Спочатку адресна частина команди пересилається з регістра даних у регістр адреси. Потім ця ж адреса збільшується на одиницю (формується адреса першої команди підпрограми) і пересилається на тимчасове зберігання в регістр команд. Потім зміст лічильника команд (адреса команди, що повинна виконуватися після повернення з підпрограми) пересилається в регістр даних і далі в осередок пам'яті, що вказується регістром адреси. Нарешті, у лічильник команд пересилається з регістра команд адреса першої команди підпрограми.

Таким чином організуються перехід до виконання команд підпрограми і запам'ятовування (перед першою її командою) адреси повернення з підпрограми. Коли наприкінці підпрограми буде виконана команда BR, то в лічильник команд потрапить адреса осередку, слідуючого за командою JSR 30.

Так користувач може виконувати програму не тільки по командах і машинних циклах, але й по окремих тактах, тобто простежити процес виконання кожної з команд, довідатися, які регістри використовує процесор при їхньому виконанні, яка інформація розміщається в цих регістрах й як реагує мікропрограмний пристрій керування на зміну вмісту тих або інших регістрів.

Домашнє завдання:

[5] С. 56-60

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.019 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал