- •Постановка задачі
- •1.1.Обробка числових двомірних масивів.
- •1.2.Робота із рядковими змінними.
- •Теоретична частина
- •2.1. Мова програмування асемблер.
- •2.2. Архітектура процесора 8086.
- •2.3. Структура центрального процесора.
- •2.4. Регістри.
- •Практична частина
- •3.1 Опис програми.
- •Реалізація програми
- •Результати роботи
- •Результати роботи програми обробки двохвимірних масивів даних.
- •Результати роботи програми роботи із рядковими змінними
- •Висновок
- •Список використаної літератури
2.3. Структура центрального процесора.
Структуру центрального процесора Intel 8086 можна розділити на два логічних блоку:
блок виконання (EU: Execution Unit);
блок інтерфейсу шин (BIU: Bus Interface Unit).
(Інтерфейс (interface) - це сукупність засобів, що забезпечують спряження пристроїв та програмних модулів як на фізичному, так і на логічному рівні).
До складу EU входять: Арифметичне-логічний пристрій ALU, пристрій управління CU і десять регістрів. Пристрої блоку EU забезпечують обробку команд, виконання арифметичних і логічних операцій.
Три частини блоку BIU - пристрій управління шинами, блок черги команд і регістри сегментів - призначені для виконання наступних функцій:
управління обміном даними з EU, пам'яттю і зовнішніми пристроями введення / виведення;
адресація пам'яті;
вибірка команд (здійснюється за допомогою блоку черги команд Queue, який дозволяє вибирати команди з попередженням).
З точки зору програміста, процесор 8086 складається з 8 регістрів загального призначення, 4 сегментних регістрів, регістра адреси команд (лічильника команд) і регістра прапорів. Процесор виставляє на шину адреси адресу обираних з пам'яті команд (або даних), які надходять в шестибайтного буфер (черга команд), а потім виконуються.
Адресну шину можна представити у вигляді 20 провідників, в кожному з яких може або протікати напруга заданого рівня (сигнал 1), або відсутні (сигнал 0). Таким чином, мікропроцесор оперує з двійковою системою числення (двійковій системою подання даних). Символьна інформація кодується відповідно до коду ASCII (Американський стандартний код для обміну інформацією). Числові дані кодуються відповідно до двійкової арифметикою. Негативні числа представляються в додатковому коді.
Мінімальна одиниця інформації, відповідна двійковому розряду, називається біт (Bit). Група з восьми бітів називається байтом (Byte) і являє собою найменшу адресованих одиницю - елемент пам'яті. Біти в байті нумерують справа наліво цифрами 0 ... 7.
2.4. Регістри.
Процесор 8086 має 14 шістнадцятирозрядних регістрів, які використовуються для управління виконанням команд, адресації і виконання арифметичних операцій. Регістр, що містить одне слово, адресується по імені.
Регістри загального призначення. До них відносяться 16-розрядні регістри АХ, ВХ, СХ, DX, кожен з яких поділений на 2 частини по 8 розрядів:
АХ складається з АН (старша частина) і AL (молодша частина);
ВХ складається з ВH і BL;
СХ складається з СН і CL;
DX складається з DH і DL;
У загальному випадку функція, виконувана тим чи іншим регістром, визначається командами, в яких він використовується. При цьому з кожним регістром пов'язано деякий стандартне його значення.
Нижче наведено деякі характерні функції кожного регістру:
регістр АХ служить для тимчасового зберігання даних (регістр акумулятор); часто використовується при виконанні операцій додавання, віднімання, порівняння та інших арифметичних і логічних операцій;
регістр ВХ служить для зберігання адреси деякої області пам’яті (базовий регістр), А також використовується як обчислювальний регістр;
регістр СХ іноді використовується для тимчасового зберігання даних, Але в основному служить лічильником, в ньому зберігається число повторень однієї команди або фрагмента програми;
регістр DX використовується головним чином для тимчасового зберігання даних; часто служить засобом пересилання даних між різними програмними системами, в якості розширювача акумулятора для обчислень підвищеної точності, А також при множенні і діленні.
Регістри для адресації. У мікропроцесорі існують чотири 16-бітових (2 байти або 1 слово) регістра, які можуть приймати участь в адресації операндів. Один з них одночасно є і регістром загального призначення - це регістр ВХ, або базовий регістр. Три інші регістру - це покажчик бази ВР, індекс джерела SI і індекс результату DI. Окремі байти цих трьох регістрів недоступні.
Будь-який з названих вище 4 регістрів може використовуватися для зберігання адреси пам'яті, а команди, що працюють з даними з пам'яті, можуть звертатися за ними до цих регістрів. При адресації пам'яті базові та індексні регістри можуть бути використані в різних комбінаціях. Різноманітні способи поєднання в командах цих регістрів та інших величин називаються способами або режимами адресації.
Регістри сегментів. Є чотири регістри сегментів, за допомогою яких пам'ять можна організувати у вигляді сукупності чотирьох різних сегментів. Цими регістрами є:
CS - регістр програмного сегменту (сегменту коду) визначає місце розташування частини пам'яті, що містить програму, тобто. виконуються процесором команди;
DS - регістр інформаційного сегмента (сегменту даних) ідентифікує частина пам'яті, призначеної для зберігання даних;
SS - регістр стекового сегмента (сегмента стека) визначає частину пам'яті, яка використовується як системний стек;
ES - регістр розширеного сегмента (додаткового сегмента) вказує додаткову область пам'яті, що використовується для зберігання даних.
Ці 4 різні області пам'яті можуть розташовуватися практично в будь-якому місці фізичної машинної пам'яті. Оскільки місце розташування кожного сегмента визначається тільки вмістом відповідного регістра сегменту, для реорганізації пам'яті достатньо всього лише, змінити цей вміст.
Регістр покажчика стека. Покажчик стека SP - це 16-бітовий регістр, який визначає усунення поточної вершини стека. Покажчик стека SP разом з сегментним регістром стека SS використовуються мікропроцесором для формування фізичної адреси стека. Стек завжди зростає в напрямку менших адрес пам'яті, тобто. коли слово поміщається в стек, вміст SP зменшується на 2, коли слово витягується з стека, мікропроцесор збільшує вміст регістру SP на 2.
Регістр покажчика команд IP. Регістр покажчика команд IP, інакше званий регістром лічильника команд, має розмір 16 біт і зберігає адресу деякої комірки пам'яті - початок наступної команди. Мікропроцесор використовує регістр IP спільно з регістром CS для формування 20-бітового фізичної адреси чергової виконуваної команди, при цьому регістр CS задає сегмент виконуваної програми, а IР - зміщення від початку сегмента. У міру того, як мікропроцесор завантажує команду з пам'яті і виконує її, регістр IP збільшується на число байт в команді. Для безпосередньої зміни вмісту регістра IP служать команди переходу.
Регістр прапорів. Прапори - це окремі біти, що приймають значення 0 або 1. Регістр прапорів (ознак) містить дев'ять активних бітів (з 16). Кожен біт даного регістра має особливе значення, деякі з цих біт містять код умови, встановлений останньої виконаної командою. Інші біти показує поточний стан мікропроцесора.
Біти регістра прапорів мають наступне призначення:
OF (ознака переповнення) - дорівнює 1, якщо виникає арифметичне переповнення, тобто коли обсяг результату перевищує розмір комірки призначення;
DF (ознака напряму) - встановлюється в 1 для автоматичного декремента в командах обробки рядків, і в 0 - для інкремента;
IF (ознака дозволу переривання) - переривання дозволені, Якщо IF = 1. Якщо IF = 0, то розпізнаються лише немаскірованние переривання;
TF (ознак трасування) - якщо TF = 1, то процесор переходить в стан переривання INT 3 після виконання кожної команди;
SF (ознака знака) - SF = 1, коли старший біт результату дорівнює 1. Іншими словами, SF = 0 для позитивних чисел, і SF = 1 для негативних чисел;
ZF (ознака нульового результату) - ZF = 1, Якщо результат дорівнює нулю;
AF (ознака додаткового перенесення) - цей прапор встановлюється в 1 під час виконання команд десяткового додавання і віднімання при виникненні переносу або позички між полубайта;
PF (ознака парності) - ця ознака встановлюється в 1, Якщо результат має парне число одиниць;
CF (ознака перенесення) - цей прапор встановлюється в 1, якщо має місце перенесення або позику з старшого біта результату; він корисний для твору операцій над числами довжиною в кілька слів, які пов'язані з переносами і позичками зі слова в слово;
X - зарезервовані біти.
Легко помітити, що всі прапори молодшого байти регістра прапорів встановлюються арифметичними або логічними операціями процесора. За винятком прапора переповнення, всі прапори старшого байта відображають стан мікропроцесора і впливають на характер виконання програми. Прапори старшого байта встановлюються і скидаються спеціально призначеними для цього командами. Прапори молодшого байта є кодами умовного переходу для зміни порядку виконання програми.
