Тема 9. Машина мова та асемблер

 

Асемблер - це програма, яка приймає вхідний текст на мові мнемонічних кодів та видає на виході програму в об’єктному коді на машиній мові.

Мікропроцесор Intel 8080 є інтерпретатором своєї особової системи команд.

Для ручної трансляції використовують таблицю команд.

Всі команди МП ділять на однобайтні, двохбайтні та трьохбайтні.

1.

КОП

 

2.

КОП
Число або № порту введення-виведення

 

3.

КОП
Молодший байт числа або адреси комірки пам’яті
Старший байт комірки пам’яті, або константа (число)

 

Рис. 9.1 . Формати команд МП Intel 8080

 

Кожна команда має два позначення

а) символічне (мнемонічне) на мові асемблера

б) позначення в вигляді об’єктного коду ( в 16 с/в)

 

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

 

 

 


 

Рис 10.1 Процесор

На протязі кожного циклу команди процесор виконує багато керуючих функцій:

1. Розміщує адресу команди в адресну шину.

2. Отримує команду із шини введення даних і дешифрує її.

3. Вибирає адресу і дані, які знаходяться в команді (адреса і дані можуть знаходитись в пам’яті або в регістрах).

4. Виконує операцію, визначену в коді команди. Операцією може бути арифметична або логічна функція, передача даних, або функція керування.

5. Слідкує за керуючими сигналами, такими як переривання і реагує відповідним чином.

6. Генерує сигнали становища, керування і часу, які необхідні для нормальної роботи ПВВ і пам’яті.

Таким чином процесор є “мозком”, який визначає дії ЕОМ.

 

Запам’ятовуючі пристрої

Пам’ять потрібна для зберігання двійкових чисел і вона організована по байтам, які є найменшою групою бітів, що адресуються. Байт складається з 8 біт, в той час як слово може мати довжину від 4 до 64 біт.

Пам’ять організовано в масив комірок, кожна із яких має особисту адресу. Адресу комірки пам’яті не слід путати з його змістом. Наприклад, комірка з адресою пам’яті 0000H може містити в собі будь-яке число. Домовились, що коли посилаємось на зміст комірки пам’яті, то її адресу розміщують в круглі дужки. Якщо 0909H – адреса комірки пам’яті, то (0909H) - зміст комірки пам’яті за цією адресою.

На рис.10.2 наведено організацію типової пам’яті.

Дешифратор адреси отримує адресу із ЦП і робить вибір відповідної комірки пам’яті.

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

 


Адреса із ЦП

 

 

Рис.10.2 Структура пам’яті

 

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

 
 

 

 


 

 

Рис.10.3 Зв’язок між процесором і пам’яттю

 

Шина адреси передає адресу комірки пам’яті, до якої звертається процесор. Шина управління визначає напрямок передачі читання чи запис. Шина даних пересилає дані між блоками.

Важливою особливістю пам’яті ЕОМ є те, що вона може містить в собі або дані, або команди, які представлені в двійковому коді.

Машина, яка користується одним і тим же форматом пам’яті для даних і команд, зветься машиною Фон-Неймана, за ім’ям математика, який запропонував такі машини.

 

Пристрій введення-виведення

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

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

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

 
 

 

 


 

 

Рис.10.4 Зв’язок між ПВВ і процесором

 

Шини між ПВВ і процесором можуть бути загальними, але розділені в часі для виконання різних операцій.

 

Регістри

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

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

 

 

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

Основні регістри: лічильник команд, регістр команд, регістр адреси пам’яті, акумулятор, регістри загального призначення, регістр умов, вказівник стеку.

Лічильник команд (ЛК) вміщує адресу комірки пам’яті, в якій знаходиться наступна команда. Цикл виконання команди починається з того, що процесор надсилає зміст ЛК в шину адреси, таким чином процесор вилучає із пам’яті перше слово команди. При цьому збільшується на одиницю зміст ЛК і в наступному циклі команди із пам’яті буде вилучена наступна команда.

Регістр команд зберігає код команди до тих пір, поки вона не буде дешифрована.

Регістр адреси пам’яті містить в собі адресу даних в пам’яті.

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

Регістр коду умов, або регістр стану, найчастіше регістр ознак (було розглянуто) .

Регістри загального призначення виконують різні функції. Вони можуть бути в якості регістрів тимчасового зберігання даних або адрес.