Главная страница

 

ДОМ
ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Информатика и программирование
Информационные технологии
Компьютерные сети
Информационная безопасность
Как заработать в сети Интернет
Информационные технологии
CASE-технологии
Программные средства
Низкоуровневое программирование
Модели данных
Структуры данных
Низкоуровневое программирование

МОДЕЛЬ МІКРОПРОЦЕСОРНОЇ СИСТЕМИ. ПРЕДСТАВЛЕННЯ ДАНИХ І СИСТЕМА КОМАНД

 

Модель мікропроцесорної системи

Для програмування на мові Асемблера знання системи команд МП, а також моделі мікропроцесорної системи (з точки зору програміста) обов'язкова.

З точки зору програміста мікропроцесорна система складається з наступних частин:

*      мікропроцесор (центральний процесор);

*      пам'ять;

*      пристрої введення/виведення.

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

Механізм переривань

Для здійснення ефективної взаємодії ЦП і периферійних пристроїв у сучасних комп'ютерах використовують механізм переривань.

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

На деякі переривання потрібно відреагувати відразу, на інші, при бажанні, можна не реагувати. Периферійний пристрій, наприклад, може вимагати від ЦП, щоб він "звернув на нього увагу", тобто може посилати в процесор сигнал переривання (або запит на обслуговування), коли він готовий до виконання до операції введення/виведення.

Якби не було в ЕОМ переривань, то процесору довелося б постійно перевіряти, чи не потребує обслуговування який-небудь пристрій.

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

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

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

Поняття про сегменти програм

Програма в оперативній пам'яті займає певну область і ділиться на три головних сегменти:

  1. Сегмент кодів. Містить коди команд мікропроцесора, які будуть виконуватися для розв'язування задачі.
  2. Сегмент даних. Містить певні дані, константи і робочі області, потрібні програмі.
  3. Сегмент стека. Містить адреси повернення до програми при перериванні.

Структура оперативної пам'яті

Схема виконання команд мікропроцесором

Комп'ютер може рахувати, писати, малювати, говорити, показувати ілюстрації і фільми, виконувати музику. Але всі ці складні дії обов'язково перед їх виконанням розкладаються на прості: додавання й порівняння двійкових кодів. І тільки такі прості дії виконує мікропроцесор комп'ютера.

Мікропроцесор - це пристрій обробки даних. Він об'єднує у собі регістри, пристрій керування та арифметико-логічний пристрій.

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

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

Усе, що обробляє мікропроцесор, надходить до нього з оперативної пам'яті.

Це власне дані, які обробляються, і програма, в якій записано, як ці дані обробляти. Дані і програма складаються з комбінацій 0 і 1. Тільки таку "мову" розуміє комп'ютер.

Комп'ютер обробляє інформацію за програмою. Програма описує послідовність операцій над даними. Програма складається з послідовності машинних команд, які мають різну довжину (1, 2, 3 байти) і знаходяться безпосередньо одна за другою у сегменті кодів.

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

У пристрої керування (лічильнику команд) зберігається адреса комірки наступної команди. Якщо команди виконуються підряд, то адреса комірки після виконання наступної команди зростає на одиницю. Але буває і так, що порядок виконання команд програми міняється. Згідно з послідовністю виконання команд міняється адреса комірки в пристрої керування.

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

У принципі можна написати програму на машинній мові, тобто сформувати набір байтів із відповідним двійковим значенням. Писати, налагоджувати й змінювати таку програму складно, майже неможливо.

Виконання програми починається з першої команди і далі послідовно виконуються інші. На рис. 1 схематично представлено виконання машинних команд програми, розміщеної в ОП.

Схема виконання машинних команд програми мікропроцесором

Рисунок 1 - Схема виконання машинних команд програми мікропроцесором

  1. У лічильник команд заноситься адреса першої команди.
  2. За адресою, вказаною у лічильнику з ОП в МП вибирається команда.
  3. На запит команди з ОП в МП поступають дані, над якими виконується операція, вказана у команді.
  4. Результат виконання команди передається в ОП.
  5. У лічильну формується адреса наступної команди і т.д.

Результат не обов'язково пересилають у комірки оперативної пам'яті. Вони можуть залишатися у регістрах МП і далі оброблятися покомандно. Операнди вибираються не тільки з ОП, а й з регістрів МП.

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

Коротка характеристика МП Intel 80x86

Щоб використовувати засоби Асемблера, необхідно ясно представляти собі деталі архітектури МП і80x86:

*      і8086 - 16-розрядний МП, який використовується в ПК IBM PC/XT;

*      і8088 - аналог і8086, відрізняється тільки взаємодією з пам'яттю: 8086 може обмінюватися з пам'яттю як байтами, так і 16-розрядними словами, в той час як 8088 - тільки байтами;

*      і80286 - покращений варіант і8086; використовується в ПК IBM АТ; може працювати у двох режимах: у реальному часі, повністю емалюючи роботу МП 8086, і в захищеному режимі, у якому може адресувати пам'ять до 16 МБ (у реальному до 1 МБ);

*      і80386 - 32 розрядний варіант і80286; може адресувати пам'ять до 4 ГБ;

*      і80486 - комбінація і80386/80387,тобто має внутрішню реалізацію операцій з плаваючою комою;

*      і80586 (Pentium) - має ряд удосконалень, що забезпечують йому збільшення продуктивності у 2…3 раза порівняно з 80486, у тому числі можливість обробляти 64-розрядні числа.

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

Структурна схема МП Intel 8086/8088

МП складається з операційного блоку (ОБ) і шинного інтерфейсу (ШІ) (рис. 2).

ОБ виконує команди, а ШІ готує дані й команди для виконання.

ОБ включає арифметико-логічний блок (АЛП), пристрій управління (ПУ) і 10 регістрів, які забезпечують виконання команд, арифметичні обчислення і логічні операції.

ШІ включає блок керування шиною, чергу команд і сегментні регістри. Він виконує такі функції:

  1. керує передачею даних в операційний блок, у пам'ять і на зовнішні пристрої;
  2. сегментні регістри керують адресацією пам'яті до 1 МБ;
  3. вибірку команд із пам'яті у чергу команд.

ОБ і шинний інтерфейс працюють паралельно, причому шинний інтерфейс випереджає ОБ на один крок. ОБ повідомляє шинний інтерфейс про необхідність доступу до даних у пам'яті чи на пристроях введення/ виведення. Об робить запит на машинну команду з черги команд. Поки ОБ виконує першу команду, шинний інтерфейс вибирає наступну команду з пам'яті.

Для програміста МП - це набір регістрів. Регістри служать для збереження деяких даних, таких як і комірки пам'яті.

Відмінності між регістрами МП та комірками пам'яті:

  1. доступ до регістрів відбувається значно швидше ніж комірок пам'яті;
  2. немає адреси, доступ до регістру відбувається по імені;
  3. в залежності від типу МП розмірність регістрів може бути різна, а розмірність комірок пам'яті завжди постійна і залишається рівною 1 байту.

Основні регістри МП і8086 16-розрядні. Розрізняють:

*      регістри даних;

*      регістри вказівників і індексів;

*      сегментні регістри;

*      регістр ознак.

Cтруктурна схема МП Intel 8086/8088

Рисунок 2 - Cтруктурна схема МП Intel 8086/8088

Регістри даних (робочі регістри) призначені для тимчасового збереження даних і результатів різних операцій над ними:

*      ах - регістр-акумулятор; зберігає один з операндів і результат після операції;

*      вх - базовий регістр; використовується для формування адреси будь-яких змінних у пам'яті;

*      сх - регістр-лічильник; використовується як лічильник циклів;

*      dx - регістр додаткових даних; зберігає старші розряди, які не помістилися в ах при деяких операціях; при введенні-виведенні зберігає адресу зовнішнього порту.

Всі робочі регістри можна розбити на два однобайтових регістри:

*      ax (ah, al)

*      bx (bh, bl)

*      cx (ch, cl)

*      dx (dh, dl)

Індексні регістри sp, bp, si, di використовують при формуванні адрес або як регістри для збереження тимчасових даних.

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

Сегментні регістри зберігають інформацію про початкові адреси сегментів:

*      cs - регістр сегмента кодів;

*      ds - регістр сегмента даних;

*      ss - регістр сегмента стеку;

*      es - регістр сегмента додаткових даних.
ір - командний вказівник; разом із регістром cs використовується для визначення адреси наступної команди програми із сегменту кодів.

Регістр ознак визначає поточний стан МП і результатів (9 біт із 16). Назви ознак і їх характеристика представлені у табл. 1.

Таблиця 1

Номер біту

Назва ознаки

Примітка

0

CF - ознака переносу

Встановлюється в 1 коли відбувся перенос із самого старшого розряду числа при виконанні команди додавання або коли потрібно зайняти одиничку для самого старшого розряду зменшуваного при відніманні

2

PF - oзнака парності

Дорівнює одиниці, якщо результат операції - число з парною кількістю біт

4

AF - ознака додаткового переносу

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

6

ZF - ознака нуля

Встановлюється в 1, якщо результат операції дорівнює нулю.

7

SF - ознака знаку

Дублює стан самого старшого біту результату.

8

TF - ознака трасування

Використовується при налагодженні програми в налагоджувальних програмах.

9

IF - ознака дозволу переривання

Якщо дорівнює одиниці, то можливе переривання програми у відповідь на зовнішню подію.

10

DF - ознака направлення

Використовується при роботі із рядками.

11

OF - ознака переповнення

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

 

Поняття про виконавчу адресу. Формування адреси комірки пам'яті

У програмах на Асемблері оперують з адресами комірок пам'яті, що складаються із адреси початку сегмента і зміщення відносно початку сегмента. Зміщенням прийнято називати номер комірки усередині сегмента (усі комірки будь-якого сегмента нумерують починаючи з нуля).

У МП і8086 шина адреси складається із двадцяти ліній, а тому можна адресувати 220 байт. Однак розміри регістрів, за допомогою яких вони адресуються, обмежені 16 бітами.

Тому адреса комірки пам'яті формується із двох частин: початкової адреси сегмента і зміщення усередині цього сегмента (див. рис. 3).

Адреса комірки пам'яті формується із двох частин: початкової адреси сегмента і зміщення усередині цього сегмента

Рисунок 3

Адреса комірки пам'яті буде записуватися таким чином: DS : 10

Цей запис вказує адресу комірки пам'яті, яка знаходиться у сегменті даних із зміщенням 10.

Запис СS : 100 вказує адресу комірки пам'яті, яка знаходиться у сегменті кодів із зміщенням 100.

Зміщення сегмента кодів називають виконавчою адресою.

Початкова адреса сегмента кодів розміщується у сегментному регістрі CS, зміщення сегмента кодів - у командному вказівнику ІР.

Поняття про мову Асемблер

Двійкове представлення команд МП називається машинною мовою.

При програмуванні використовують символічне позначення всіх команд.

Символічне позначення всіх команд МП називають мовою Асемблер.

Програму, яка переводить програму з мови Асемблер на машинну мову називають програмою-транслятором або просто Асемблером (ASM), або Макроасемблером (MASM), або Турбоасемблером (TASM).

Асемблування - це процес переведення програми з мови Асемблер на машинну мову.

 

Структура програми на Асемблері

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

Кожний вихідний модуль складається з послідовності рядків.

Розрізняють:

  1. рядки-коментарі;
  2. рядки, що є командами МП, записаними у мнемонічному вигляді:
  3. рядки директиви (псевдооператори).

Рядки-коментарі використовуються для записування пояснень у тексті програми. Рядок-коментар починається із символу ";".

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

Рядки-директиви призначені для визначення даних, що використовуються у програмі для керування процесом асемблування.

Структура рядка-оператора програми на Асемблері

Структура рядка-оператора програми на Асемблері представлена у табл. 2.

Таблиця 2

Поле мітки

Поле оператора

Поле операндів

Поле коментарів

Мітка використовується для посилання на даний об'єкт

Містить мнемоніку команди МП чи директиву

Вказуються операнди, необхідні для команд

Для записування пояснень

Приклад: START

MOV

BX, AX

; Пересилання

 

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

Операнди - це дані, над якими виконуються операції.
Адресація операндів - це спосіб описування відповідних адрес місця зберігання операндів, що використовуються в програмах.

Розглянемо деякі із способів адресації:

Регістрова адресація - операнд вибирається із регістра або розміщується у регістр.

Приклад:

mov ax, bx

; [bx] —> [ax], вибирається вміст регістра bx і розміщується у регістрі ах

Безпосередня адресація - операнд (8- чи 16-розрядна константа) міститься безпосередньо у тілі команди.

Приклад:

mov ax, 100

; [100] —> [ax], константа 100 записується у регістр ах

Пряма адресація - операнд розміщується у комірці ОП сегмента даних. Зміщення операнда (виконавча адреса) задається у тілі команди і складається із вмісту регістра DS для визначення адреси комірки.

Приклад:

mov ax, [0030]

; із сегменту даних із зміщенням 0030 вибирається операнд і розміщується у регістрі аx/b>

Непряма адресація - операнд розміщується у комірці оперативної пам'яті, а виконавча адреса операнда (зміщення) міститься в одному із регістрів bx, bp, si, di.

Приклад:

mov ax, [bx]

; вміст 16-розрядного слова, що зберігається у пам'яті за адресою ds:bx пересилається у регістр аx

 

Система команд МП 8088 (типи операторів)

Система команд МП - це фіксований список команд, які може виконати МП.

Усі команди МП сімейства 80х86 можна розбити на такі групи:

  1. Команди пересилання даних - найбільш широко використовують у МП і дозволяють пересилати дані із або в регістри мікропроцесора або комірки пам'яті.
  2. Арифметичні команди - дозволяють виконувати арифметичні дії (додавання, віднімання, ділення і множення) над операндами, представленими у різних форматах. Для виконання більш складних дій потрібно використовувати математичний сопроцесор або написати відповідні підпрограми, використовуючи елементарні математичні дії.
  3. Команди зсуву - оперують із даними у вигляді ланцюжка бітів і дозволяють зсувати або циклічно крутити ці ланцюжки, залишаючи їх взаємне положення без змін.
  4. Логічні команди - теж розглядають свої операнди у вигляді ланцюжка бітів і дають можливість виконувати над ними різні логічні операції.
  5. Команди передачі керування - з їх допомогою можна змінювати порядок виконання команд у програмі для організації розгалужень, циклів, виклику підпрограми.
  6. Команди введення/ виведення - здійснюють обмін інформацією між програмою і зовнішніми пристроями.
  7. Команди роботи з рядками - можуть виконувати ряд елементарних дій з масивами даних.
  8. Додаткові команди

Слід відмітити, що система команд 32-розрядних процесорів є суттєво розширеною системою команд 8086/80286. Розширення стосуються збільшення розрядності адрес і операндів, більш гнучкої системи адресації, появи принципово нових типів даних (бітові рядки і поля) і команд.

Формати машинних команд

Структура машинної команди:

Код операції (КОп)

Адресна частина

В адресній частині міститься інформація про місцезнаходження операндів.

Формат команди - це відомості про її довжину, склад і призначення її складових частин.

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

Формат 1

1 байт

 

КOп

 

Формат 2

1 байт

2 байт

 

КOп

Oперанд

 

Формат 3*

1 байт

2 байт

3 байт

 

КOп

Молодший байт

Старший байт

* В третьому форматі команди у другому та третьому байтах може міститися операнд або адреса комірки.

Типи даних

МП сімейства і80х86 безпосередньо підтримують такі типи даних:

*      Біт - одиниця інформації. Біт в пам'яті задається базою (адресою слова) і зміщенням (номером біта в слові).

*      Бітове поле - група до 32 суміжних біт, які розміщуються не більше ніж в 4 байтах.

*      Бітовий рядок - набір суміжних біт довжиною до 4 Гбіт.

*      Байт - 8 біт.

*      Числа без знаку: байт/слово/подвоєне слово/четвірне слово - 8/16/32/64 біт.

*      Цілі числа зі знаком: байт/слово/подвоєне слово/четвірне слово. Одиничне значення самого старшого біта (знак) є ознакою від'ємного числа, яке зберігається в доповняльному коді.

*      Дійсні числа в форматі з плаваючою точкою:

*      одинарної точності - 32 біта (23 біта мантиса і 8 біт порядок);

*      подвійної точності - 64 біта (52 біта мантиса і 11 біт порядок);

*      підвищеної точності - 80 біт (64 біта мантиса і 15 біт порядок).

*      Двійково-десяткові числа:

*      8-розрядні упаковані, які містять два десяткових розряди в одному байті;

*      8-розрядні неупаковані, які містять один десятковий розряд в байті;

*      80-розрядні упаковані (обробляються тільки сопроцесором).

*      Рядки байт, слів і подвійних слів.

Контрольні запитання і задачі

  1. Назвіть основні пристрої мікропроцесорної системи.
  2. Що собою представляє пам'ять мікропроцесорної системи?
  3. Що називають перериванням?
  4. У чому полягає механізм переривань?
  5. Що знаходиться у сегменті кодів?
  6. Яку інформацію містить машинна команда7
  7. Які функції виконує лічильник команд?
  8. Які пристрої входять до складу операційного блоку МП і8086?
  9. Як відбувається доступ до регістрів мікропроцесора та комірок оперативної пам'ятіі?
  10. Який регістр МП і8086 використовується як лічильник циклів?
  11. Яку розрядність має регістр dh?
  12. Для чого призначені сегментні регістри?
  13. Які регістри МП і8086 використовуються для визначення адреси наступної команди програми із сегмента кодів?
  14. Про що свідчить записування одиниці у сьомий біт регістра ознак після виконання операції віднімання?
  15. Як формується фізична адреса комірки пам'яті?
  16. На що вказує запис DS:300?
  17. Які рядки програми на Асемблері перетворюються транслятором у послідовність машинних команд?
  18. Як називається спосіб описування адреси місця зберігання операндів?
  19. Як називається спосіб адресації, коли операнд вибирається з регістра або розміщується у регістр.
  20. Як називають спосіб адресації, якщо операнд міститься безпосередньо у тілі програми?
  21. Які способи адресації використовуються для вказівки операндів у комірках оперативної пам'яті?
  22. Як визначається адреса комірки пам'яті при прямій адресації операнда?
  23. Як визначається адреса комірки пам'яті при непрямій адресації операнда?
  24. Які способи адресації використовуються у команді mov ah, 82?
  25. Які способи адресації використовуються у команді mov [bx], ax?
  26. Що називають системою команд мікропроцесора?
Copyright © Eugene, 2007
e-mail: webmaster@ITDom.info
Rambler's Top100 Рейтинг@Mail.ru