Кодування та виконання команд в комп'ютері 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Кодування та виконання команд в комп'ютері



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

■ забезпечити вибірку команд програми із його пам’яті в заданій послідовності, організувавши звернення до неї за відповідними адресами;

■ забезпечити розпізнавання типів виконуваних операцій;

■ організувати звернення до пам’яті за відповідними адресами для вибірки необхід­них для виконання кожної команди даних;

■ організувати виконання над даними операцій відповідно до вказівок команд;

■ запам’ятати результати обчислень.

Розглянемо як це відбувається в комп’ютері детальніше.

Кодування команди та програми

Команда в комп’ютері зберігається в двійковій формі. Вона вказує тип операції, яка має бути виконаною, адреси операндів, над якими виконується операція, та адреси роз­міщення результатів виконання операції. Відповідно до цього команда складається з двох частин, як це показано на рис. 3.1: коду операції та адресної частини.

Поле коду операції (КОП) займає k розрядів. Ним може бути закодовано до N = 2k різних операцій. Кількість двійкових розрядів, які відводяться під код операції, вибира­ється таким чином, щоб ними можна було закодувати всі виконувані в даному комп'юте­рі операції. Якщо деякий комп’ютер може виконувати Nc різних операцій, то мінімальна розрядність поля коду операції k визначається наступним чином: k = [log2Nc], де вираз в дужках означає заокруглення до більшого цілого.

Поле адреси (адресна частина) займає ш розрядів. В ньому знаходяться адреси опе­рандів. Кожна адреса займає ш. розрядів, де і - номер адреси (і=1,2,...1), 1 - кількість адресних полів. Кожною адресою можна адресувати пам’ять ємністю 2ті слів. Детальна інформація про зв’язок між ємністю пам’яті та розрядністю адреси наведена в розділі 9, в якому описана будова пам’яті.

Розмір команди k + m повинен бути узгодженим з розміром даних, тобто бути з ним однаковим або кратним цілому числу, що спрощує організацію роботи з пам’яттю. Як правило, розмір команди рівний 8, 16, 32 біти.

При написанні програми крім двійкової можуть використовуватись й інші форми представлення команд: вісімкова, шістнадцяткова, символьна (мнемонічна).

Використання вісімкового і шістнадцяткового кодування дозволяє скоротити запи­си і спростити роботу програміста. Як відомо 3 двійкових розряди (тріада) замінюються на 1 вісімковий, а 4 двійкових розряди (тетрада) - на 1 шістнадцятковий. Приклад: (000011111111)2 = (0377)8 = (0FF)l6

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

ADD - додати (add),

SUB - відняти (subtract),

MPY - перемножити (multiply),

DIV - поділити (divide),

LOAD - зчитати дані з пам’яті (load data from memory),

STORE - записати дані в пам’ять (store data to memory).

Операнди також представляються символічно. Наприклад команда ADD R, Y озна­чає додавання вмісту комірки пам’яті Y до вмісту регістра R. Зауважимо, що операція виконується над вмістом, а не над адресою комірки пам’яті та регістра.

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

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

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

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

Порядок виконання команд

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

1. Вибірка чергової команди із основної пам’яті.

2. Визначення типу вибраної команди, тобто її дешифрування.

3. Визначення адрес даних, необхідних для виконання цієї команди.

4. Виконання операцій пересилання даних (зчитування даних із пам’яті в регістри процесора).

5. Виконання операції відповідно до її коду в полі коду операції команди.

6. Визначення адрес, за якими запам’ятовуються результати.

7. Запам’ятовування результатів.

8. Підготовка до виконання наступної команди, тобто обчислення її адреси.

На рис. 3.2 показана діаграма циклу виконання команди, причому в нижній стрічці наведені операції, які виконуються всередині процесора, а в верхній стрічці - операції запису та вибірки із основної пам’яті. Операції 3 та 4 можуть повторюватись стільки

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

7, якщо отримано кілька результатів. При обробці декількох даних за однією командою операції 3-7 повторюються відповідну кількість разів. Такі операції називають вектор­ними.

 

 



Поделиться:


Последнее изменение этой страницы: 2016-08-01; просмотров: 619; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.59.236.219 (0.008 с.)