ДОМ
|
Информационные технологии |
Низкоуровневое программирование |
3. АРИФМЕТИЧНІ ТА ЛОГІЧНІ ОСНОВИ ПРОГРАМУВАННЯ 4. МОДЕЛЬ МІКРОПРОЦЕСОРНОЇ СИСТЕМИ. ПРЕДСТАВЛЕННЯ ДАНИХ І СИСТЕМА КОМАНД 5. ОПЕРАТОРИ ДЛЯ ЗАПИСУВАННЯ АЛГОРИТМІВ ЛІНІЙНИХ ПРОЦЕСІВ 6. ОФОРМЛЕННЯ АЛГОРИТМІВ З ГАЛУЖЕННЯМ 7. ОФОРМЛЕННЯ АЛГОРИТМІВ ЦИКЛІЧНОГО ТИПУ 8. ПРОГРАМУВАННЯ НА МОВІ НИЗЬКОГО РІВНЯ return_links(); ?> |
МОДЕЛЬ МІКРОПРОЦЕСОРНОЇ СИСТЕМИ. ПРЕДСТАВЛЕННЯ ДАНИХ І СИСТЕМА КОМАНД
Модель мікропроцесорної системи
Для програмування на мові Асемблера знання системи команд МП, а також моделі
мікропроцесорної системи (з точки зору програміста) обов'язкова.
З точки зору програміста мікропроцесорна система складається з наступних
частин:
Мікропроцесор (центральний процесор) призначений для виконання програми.
Сама програма, а також дані, необхідні для її роботи, знаходяться у пам'яті
мікропроцесорної системи. Цю пам'ять можна розглядати як набір (досить великий)
комірок пам'яті розміром в один байт. Для здійснення обміну інформацією між
людиною і мікропроцесорною системою служать периферійні пристрої (пристрої
введення/виведення).
Механізм переривань
Для здійснення ефективної взаємодії ЦП і периферійних пристроїв у сучасних
комп'ютерах використовують механізм переривань.
Переривання - це подія, яка вимагає звернути на себе
увагу. У комп'ютері такі ситуації виникають при натисненні на клавішу, виходу з
ладу якого-небудь пристрою, намаганні ділити на нуль, виконанні операцій
введення/виведення і в багатьох інших випадках.
На деякі переривання потрібно відреагувати відразу, на інші, при бажанні,
можна не реагувати. Периферійний пристрій, наприклад, може вимагати від ЦП, щоб
він "звернув на нього увагу", тобто може посилати в процесор сигнал
переривання (або запит на обслуговування), коли він готовий до виконання до
операції введення/виведення.
Якби не було в ЕОМ переривань, то процесору довелося б постійно перевіряти,
чи не потребує обслуговування який-небудь пристрій.
Механізм переривань полягає у тому, що процесор завершує виконання поточної
команди поточної програми і переходить до виконання спеціальної програми
обслуговування переривання.
Кожне переривання має свій унікальний номер і зв'язану з ним програму,
призначену для обробки ситуації, що виникла - обробник переривань.
Отже при появі у комп'ютері ситуації, що відповідає
перериванню з деяким номером, ЦП завершує поточну команду поточної програми і
починає виконувати програму-обробник переривань із цим номером. Виконання
програми-обробника може бути перервано іншими перериваннями. У цьому випадку
спочатку буде оброблено більш важливе переривання, потім продовжиться обробка
попереднього переривання і лише потім відновиться поточна робота ЦП. Існує, так
звана, черга переривань.
Поняття про сегменти програм
Програма в оперативній пам'яті займає певну область і ділиться на три
головних сегменти:
Схема виконання команд мікропроцесором
Комп'ютер може рахувати, писати, малювати, говорити, показувати ілюстрації і
фільми, виконувати музику. Але всі ці складні дії обов'язково перед їх
виконанням розкладаються на прості: додавання й порівняння двійкових кодів. І
тільки такі прості дії виконує мікропроцесор комп'ютера.
Мікропроцесор - це пристрій обробки даних. Він об'єднує у
собі регістри, пристрій керування та арифметико-логічний пристрій.
Регістри - це дуже швидка пам'ять малого об'єму для
зберігання проміжних даних і результатів обробки.
Мікропроцесор керує потоками інформації і здійснює основні процеси її
обробки - арифметичні й логічні операції. Узгодження роботи в часі всіх
пристроїв комп'ютера відбувається за допомогою імпульсів тактового генератора.
Усе, що обробляє мікропроцесор, надходить до нього з оперативної пам'яті.
Це власне дані, які обробляються, і програма, в якій записано, як ці дані
обробляти. Дані і програма складаються з комбінацій 0 і 1. Тільки таку
"мову" розуміє комп'ютер.
Комп'ютер обробляє інформацію за програмою. Програма описує послідовність
операцій над даними. Програма складається з послідовності машинних команд, які
мають різну довжину (1, 2, 3 байти) і знаходяться безпосередньо одна за другою
у сегменті кодів.
Чергова команда, яка складається з коду операції та адрес комірок із даними,
надходить з оперативної пам'яті в регістри мікропроцесора. Операцію виконує
арифметико-логічний пристрій. Результат записується в іншу комірку оперативної
пам'яті або зберігається в одному з регістрів процесора до виконання наступної
команди.
У пристрої керування (лічильнику команд) зберігається адреса комірки
наступної команди. Якщо команди виконуються підряд, то адреса комірки після
виконання наступної команди зростає на одиницю. Але буває і так, що порядок
виконання команд програми міняється. Згідно з послідовністю виконання команд
міняється адреса комірки в пристрої керування.
Програма, що знаходиться в ОП і виконується МП у кінці кінців представляє
собою набір байтів, які сприймаються МП як код тієї чи іншої команди.
У принципі можна написати програму на машинній мові, тобто сформувати набір
байтів із відповідним двійковим значенням. Писати, налагоджувати й змінювати
таку програму складно, майже неможливо.
Виконання програми починається з першої команди і далі послідовно
виконуються інші. На рис. 1 схематично представлено виконання машинних команд
програми, розміщеної в ОП.
Рисунок 1 - Схема виконання машинних
команд програми мікропроцесором
Результат не обов'язково пересилають у комірки оперативної пам'яті. Вони
можуть залишатися у регістрах МП і далі оброблятися покомандно. Операнди
вибираються не тільки з ОП, а й з регістрів МП.
Програму на машинній мові можна безпосередньо увести в комірки ОП і в той же
час можна переглядати вміст регістрів після виконання кожної команди.
Коротка характеристика МП Intel 80x86
Щоб використовувати засоби Асемблера, необхідно ясно представляти собі
деталі архітектури МП і80x86:
МП цього сімейства нарощують свої можливості у перерахованому порядку, але
строго сумісні від молодших моделей до старших: усе, що може і8086/8088
реалізує і Pentium.
Структурна схема МП Intel 8086/8088
МП складається з операційного блоку (ОБ) і шинного інтерфейсу (ШІ) (рис. 2).
ОБ виконує команди, а ШІ готує дані й команди для виконання.
ОБ включає арифметико-логічний блок (АЛП), пристрій управління (ПУ) і 10
регістрів, які забезпечують виконання команд, арифметичні обчислення і логічні
операції.
ШІ включає блок керування шиною, чергу команд і сегментні регістри. Він
виконує такі функції:
ОБ і шинний інтерфейс працюють паралельно, причому шинний інтерфейс
випереджає ОБ на один крок. ОБ повідомляє шинний інтерфейс про необхідність
доступу до даних у пам'яті чи на пристроях введення/ виведення. Об робить запит
на машинну команду з черги команд. Поки ОБ виконує першу команду, шинний
інтерфейс вибирає наступну команду з пам'яті.
Для програміста МП - це набір регістрів. Регістри служать для збереження
деяких даних, таких як і комірки пам'яті.
Відмінності між регістрами МП та комірками пам'яті:
Основні регістри МП і8086 16-розрядні. Розрізняють:
Рисунок 2 - Cтруктурна схема МП Intel
8086/8088
Регістри даних (робочі регістри) призначені для тимчасового збереження даних
і результатів різних операцій над ними:
Всі робочі регістри можна розбити на два однобайтових регістри:
Індексні регістри sp, bp, si, di використовують при формуванні адрес або як
регістри для збереження тимчасових даних.
Регістр sp - вказівник стеку, тимчасово зберігає адресу, до якої
треба повернутися після того, як виконається процедура переривання чи виклику
програми.
Сегментні регістри зберігають інформацію про початкові адреси сегментів:
Регістр ознак визначає поточний стан МП і результатів (9 біт із 16). Назви
ознак і їх характеристика представлені у табл. 1.
Поняття про виконавчу адресу. Формування адреси комірки
пам'яті
У програмах на Асемблері оперують з адресами комірок пам'яті, що складаються
із адреси початку сегмента і зміщення відносно початку сегмента. Зміщенням
прийнято називати номер комірки усередині сегмента (усі комірки будь-якого
сегмента нумерують починаючи з нуля).
У МП і8086 шина адреси складається із двадцяти ліній, а тому можна адресувати
220 байт. Однак розміри регістрів, за допомогою яких вони
адресуються, обмежені 16 бітами.
Тому адреса комірки пам'яті формується із двох частин: початкової адреси
сегмента і зміщення усередині цього сегмента (див. рис. 3).
Рисунок 3
Адреса комірки пам'яті буде записуватися таким чином: DS : 10
Цей запис вказує адресу комірки пам'яті, яка знаходиться у сегменті даних із
зміщенням 10.
Запис СS : 100 вказує адресу комірки пам'яті, яка знаходиться у сегменті
кодів із зміщенням 100.
Зміщення сегмента кодів називають виконавчою адресою.
Початкова адреса сегмента кодів розміщується у сегментному регістрі CS,
зміщення сегмента кодів - у командному вказівнику ІР.
Поняття про мову Асемблер
Двійкове представлення команд МП називається машинною мовою.
При програмуванні використовують символічне позначення всіх команд.
Символічне позначення всіх команд МП називають мовою Асемблер.
Програму, яка переводить програму з мови Асемблер на машинну мову називають
програмою-транслятором або просто Асемблером (ASM), або Макроасемблером (MASM),
або Турбоасемблером (TASM).
Асемблування - це процес переведення програми з мови
Асемблер на машинну мову.
Структура програми на Асемблері
Вихідна програма на Асемблері складається з одного чи декількох вихідних
модулів.
Кожний вихідний модуль складається з послідовності рядків.
Розрізняють:
Рядки-коментарі використовуються для записування пояснень у тексті
програми. Рядок-коментар починається із символу ";".
Рядки-команди МП визначають ті інструкції, які МП буде виконувати в
процесі виконання програми. Програма транслятор Асемблер перетворює
рядки-команди у відповідну послідовність байтів, які можуть безпосередньо
виконуватись МП.
Рядки-директиви призначені для визначення даних, що використовуються
у програмі для керування процесом асемблування.
Структура рядка-оператора програми на Асемблері
Структура рядка-оператора програми на Асемблері представлена у табл. 2.
Способи адресації операндів
Операнди - це дані, над якими виконуються операції. Розглянемо деякі із способів адресації:
Регістрова адресація - операнд вибирається із регістра або
розміщується у регістр.
Безпосередня адресація - операнд (8- чи 16-розрядна константа)
міститься безпосередньо у тілі команди.
Пряма адресація - операнд розміщується у комірці ОП
сегмента даних. Зміщення операнда (виконавча адреса) задається у тілі команди і
складається із вмісту регістра DS для визначення адреси комірки.
Непряма адресація - операнд розміщується у комірці
оперативної пам'яті, а виконавча адреса операнда (зміщення) міститься в одному
із регістрів bx, bp, si, di.
Система команд МП 8088 (типи операторів)
Система команд МП - це фіксований список команд, які може виконати
МП.
Усі команди МП сімейства 80х86 можна розбити на такі групи:
Слід відмітити, що система команд 32-розрядних процесорів є суттєво
розширеною системою команд 8086/80286. Розширення стосуються збільшення
розрядності адрес і операндів, більш гнучкої системи адресації, появи
принципово нових типів даних (бітові рядки і поля) і команд.
Формати машинних команд
Структура машинної команди:
В адресній частині міститься інформація про місцезнаходження операндів.
Формат команди - це відомості про її довжину, склад і призначення її
складових частин.
Команди містять одно- або двобайтний код операції, за яким може
розміщуватись декілька байт, що визначають режим виконання команди і операнди.
Команди можуть використовувати до трьох операндів (або ні одного). Результат
виконання записується в місце, яке визначається командою, або в місце, задане
операндом призначення. Операнди можуть знаходитись в пам'яті, регістрах
процесора або безпосередньо в команді. Нижче наведені приклади деяких форматів
команд:
* В третьому форматі команди у другому та третьому байтах може міститися
операнд або адреса комірки.
Типи даних
МП сімейства і80х86 безпосередньо підтримують такі типи даних:
Контрольні запитання і задачі
|
Copyright © Eugene, 2007 |
![]() |