Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Moduli_pitannya(1).doc
Скачиваний:
5
Добавлен:
06.12.2018
Размер:
189.95 Кб
Скачать

Операнди та основні режими адресації

 Як уже зазначалося, операнди команд (тобто дані, над якими виконуються операції) вказуються в самій команді. Коли процесор зчитує ім'я команди, він може визначити за цим ім'ям кількість і тип операндів. В залежності від типу операндів розрізняють такі основні режими адресації:

                      безпосередня. Значення операндів безпосередньо вказуються в самій команді;

                      пряма; в команді вказується адреса комірки пам'яті, в якій зберігається потрібне дане;

                      регістрова; в команді вказується назва регістру процесора, в якому зберігається значення операнду;

                      непряма; в команді вказується ім'я регістру процесора, але в ньому зберігається не саме значення операнду, а адреса комірки пам'яті, з якої його потрібно вибрати.

 

Етапи виконання команд

 Традиційно виділяють три етапи виконання кожної команди: вибірка команди; декодування команди; безпосереднє виконання.

 На початку вибірки чергової команди її адреса міститься в програмному лічильнику. Ця адреса пересилається до регістру адреси пам'яті, а керуючий пристрій надсилає до оперативної пам'яті сигнал зчитування. Інформація, яка зчитується з оперативної пам'яті, пересилається до регістру даних пам'яті, а звідти - до регістру команд та універсальних регістрів. З конструктивних міркувань хоча б один операнд команди, яка здійснює арифметичні операції, як правило, повинен знаходитись в регістрах процесора, а не в оперативній пам'яті.  Декодування - це перетворення двійкових кодів команд та операндів на послідовність електричних імпульсів, які є необхідними для виконання команди апаратними засобами. Розрізняють апаратне та мікропрограмне декодування. В останньому випадку мова йде про використання мікрокоду - набору правил, відповідно до яких здійснюється декодування. Мікрокод по суті являє собою мову програмування, але це є дуже специфічна мова, рівень якої є ще нижчим, ніж рівень машинної мови. Мікрокод є недоступним для програміста і є прерогативою розробників процесора.  Нарешті, на етапі безпосереднього виконання декодована команда реалізується апаратними засобами.  Після завершення виконання команди відповідним чином змінюється вміст програмного лічильника (він вказує на наступну команду). Під час виконання команди стан процесора може змінитися, що відображається в регістрі станів процесора.  Можна виділяти ще як мінімум два етапи виконання команди: кодування результату та його запис до оперативної пам'яті.

2. Машина Тьюринга, що була описана А.Тьюрингом у 1936 р., являє собою теоретичну модель обчислювальної машини. Машину Тьюринга (МТ) слід розглядати як одну з можливих формалізацій поняття алгоритму. Її робота може бути описана таким чином.Розглянемо стрічку, розділену на окремі комірки; ця стрічка є потенційно нескінченною в обидва боки. В кожній комірці може бути записаний певний символ з деякого заданого алфавіту A. Машина Тьюринга в будь-який момент часу може перебувати в певному стані (множина станів S є скінченною) і вказувати на певну комірку.

Схема машини Тьюринга

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

Програма машини Тьюринга являє собою послідовність інструкцій, кожна з яких має вигляд aisj → akslI, де ai, akє A; sl, smS, I є {R, L, H}.  Цей запис читається так: якщо машина перебуває в стані sl і зчитує символ ai, вона повинна записати в поточну позицію символ ak, перейти до стану sm і зсунутися вправо (відповідає літері R), вліво (відповідає літері L) або зупинитися (відповідає літері H).  Вважається, що на початку роботи машина перебуває на лівому кінці стрічки в початковому стані s0. Вона виконує операції, що визначаються її програмою. Якщо вона в деякий момент зупиняється, результатом роботи алгоритму вважається послідовність символів, яка записана на стрічці в момент зупинки. Приклад. Наведемо програму для машини Тьюринга, яка обчислює функцію x+y, де x,y - натуральні числа. Необхідно домовитися про представлення цих чисел. Стандартним для машини Тьюринга є представлення натурального числа n послідовністю з n+1 одиниць.

 Ідея вирішення могла б полягати у тому, щоб замінити крайній зліва та крайній справа символи "1" на "0", а роздільник "0" - на "1". Якби були доступні відповідні команди, це можна було б зробити просто і швидко, але ми обмежені жорсткими рамками машини Тьюринга. За таких умов схема алгоритму полягає в такому: рухатися вправо до виявлення першої одиниці (початок першого числа); як тільки вона буде виявлена, замінити її на нуль і перейти в інший стан s1. Потім рухатися вправо, поки 0, який розділяє два числа, не буде замінений на 1; при цьому знову змінити стан. Далі рухатися вправо до появи першого нуля (кінця другого доданку). Після цього зсунутися вліво, замінити останню 1 на 0 та зупинитися. Програма може мати вигляд: 0s0 → 0 s0R 1s0 → 0 s1R 1s1 → 1 s1R 0s1 → 1 s2R 1s2 → 1 s2R 0s2 → 0 s3L 1s3 → 0 s4H.

Наведений приклад показує, що машина Тьюринга є дуже незручною для програмування. Ці незручності пов'язані з тим, що:

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

·                      неструктурованість записів на стрічці; заздалегідь невідомо, де закінчується одне число і починається інше;

·                      дуже обмежений набір команд; відсутні, наприклад, основні арифметичні операції.

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

3. Програма, яка повинна виконуватися, записана в машинних кодах, тобто машинною мовою. Машинна мова передбачає запис інструкцій та операндів у вигляді послідовностей нулів та одиниць. Кажуть, що машинна мова є мовою низького рівня. Програма в машинних кодах являє собою послідовність команд, які процесор може сприйняти і виконати безпосередньо.Кожний тип машин має свою машинну мову. Машинний код, написаний для однієї машини, не може бути виконаний на іншій без використання спеціального програмного забезпечення.  Програмування в машинних кодах є дуже марудною справою. Програми є надто громіздкими і нерозбірливими. Важко тримати в пам'яті машинні коди і дуже легко припуститися помилки. Крім того, при переході на іншу машину все програмне забезпечення доводиться переписувати заново.  Але виявилося, що можна програмувати мовою, більш сприйнятною для людини, якщо автоматизувати процес перекладу з цієї мови на машинну. Ця ідея лягла в основу мов високого рівня.

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]