Ім'я файлу: КОМАНДИ МП.docx
Розширення: docx
Розмір: 239кб.
Дата: 05.03.2021

КОМАНДИ МП. СИСТЕМА КОМАНД МП X8086
Система команд МП, як правило, містить наступні типи команд:

а) команди обчислень (арифметичних і логічних);

б) команди пересилання даних;

в) команди управління (умовних і безумовних переходів);

г) команди введення-виведення;

д) команди звернення до підпрограм;

е) допоміжні команди;
Відповідно до адресної частини команди може здійснюватися звернення до пам'яті, регістру або пристрою введення-виведення.

Система команд процесора i8086 складається з 98 команд (3800 і більше їх варіацій): 19 команд передачі даних, 38 команд обробки, 24 команди переходу і 17 команд управління процесором. Можливо 7 режимів адресації. Мікропроцесор не містив команди для роботи з числами з плаваючою комою. Дана можливість реалізовувалася окремою мікросхемою, званої математичний співпроцесор, який встановлювався на материнській платі. Співпроцесор зовсім не обов'язково повинен був бути проведений Intel (модель i8087), наприклад, деякі виробники мікросхем, такі як Weitek, випускали більш продуктивні співпроцесори, ніж Intel.

Таблиця 1 – Динаміка розширення набору мікрокоманд процесорів

Мікропроцесор

Число мікрокоманд


80286

170

80386, 486, Pentium

220

Pentium MMX

277

Pentium III

347

Pentium 4 Willamete, Northwood

491

Pentium 4 Prescott, Prescott 2M

504




СТРУКТУРА І ВИДИ КОМАНД
Команда машинної програми (інакше, машинна команда) – це елементарна інструкція машині, виконувана нею автоматично без будь-яких додаткових вказівок і пояснень.

Машинна команда складається з двох частин: операційної і адресної.

Операційна частина команди – це група розрядів в команді, призначена для представлення коду операції машини.

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

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

Типова структура триадресних команди:

КОП а1, а2, а3,

де а1 і а2 - адреси комірок (регістрів), де розташовані, відповідно, перше та друге числа, що беруть участь в операції;

а3 - адреса комірки (регістри), куди слід помістити число, отримане в результаті виконання операції.

Типова структура двоадресних команди:

КОП а1, а2,

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

а2 - зазвичай адреса комірки (регістри), де зберігається друга бере участь в операції число.

Типова структура одноадресних команди:

КОП а1,

де a1 в залежності від модифікації команди може позначати або адреса комірки (регістри), де зберігається одна з чисел, що беруть участь в операції, або адреса комірки (регістри), куди слід помістити число результат операції.

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

Програма на мові асемблера являє собою послідовність операторів, що описують виконувані дії. Оператором (рядком) вихідної програми може бути або команда, або псевдооператор (директива) асемблера.

Команди представляють коротку нотацію (запис) системи команд. У деяких посібниках вони називаються машинними командами, тому саме вони повідомляють процесору, які дії необхідно виконувати. На відміну від команд псевдооператор повідомляють (транслятору), що йому робити з командами і даними, які вводяться в програму.

Команда може включати до 4-х полів наступного вигляду:
[мітка:] мнемокод [операнд] [; коментар]
Оскільки в [] вказуються необов'язкові поля, отже, команда обов'язково повинна містити мнемокод виконуваної дії. Поля можуть набиратися в будь-якому місці рядка, але відокремлюйте поля один від одного хоча б одним пропуском і, якщо хочете розібратися у своїй програмі по закінченню часу, подбайте про читабельність, що найчастіше забезпечується за рахунок позиціонування полів.
СИСТЕМА ПЕРЕРИВАНЬ МП
Існує кілька типів екстраординарних ситуацій, в яких поведінка процесора регламентується особливими правилами. Такі ситуації виникають, коли потрібна термінова реакція на зовнішні впливи, коли при виконанні програми відбувається будь-яка помилка чи існує ймовірність отримання неточного результату обчислень.

В загальному випадку, всі ці ситуації поділяються за принципом їх виявлення, джерела виникнення і реакції на них на наступні три категорії:

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

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

  3. виняткові ситуації SIMD - можуть виникати тільки при виконанні SIMD-команд і повністю визначаються станом SIMD-регістрів процесора, повідомляють про свої виникненні також, як і виключення FPU через спеціальне переривання, тобто обробник переривання або особливої ​​ситуації повинен сам програмним шляхом визначити причину його надходження.


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

Переривання:

  1. зовнішні масковані переривання - приймаються на виведенні INTR # CPU, якщо прапор EFLAGS.IF встановлено, масковані переривання не проходять;

  2. зовнішні немасковані переривання - приймаються на виведення NMI # CPU, механізм заборони немаскованих переривань відсутня.

Особливі ситуації:

  1. генеруються процесором особливі ситуації - виникають у процесі і за результатами виконання команд, поділяються на помилки, пастки і збої;

  2. програмні переривання - можуть бути викликані командами INT0, INT3, INTn, BOUND;

  3. особливі ситуації генеруються засобами самоперевірки процесора.


Всі переривання й особливі ситуації мають унікальні ідентифікаційні номери. Ці номери називаються векторами і лежать в межах від 0 до 255. Вектори від 0 до 31 відведені для особливих ситуацій та немаскованого переривання, причому деякі з них зарезервовані і не повинні використовуватися програмами. Вектори від 32 до 255 вільні для будь-якого використання користувацькими програмами і зовнішніми пристроями.

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

Помилка - це особлива ситуація, яка може бути виправлена ​​обробником особливої ​​ситуації. При зустрічі помилки стан процесора зберігається в тому вигляді, яким воно було до початку виконання команди, яка ініціювала генерацію помилки, а значення CS: EIP, що вказують на цю команду зберігаються в стеку обробника. Перерване програма після виправлення помилки може бути продовжена безпосередньо з команди, що викликала цю помилку.

Пастка - особлива ситуація, яка генерується після виконання відповідної команди. У цьому випадку зберігаються в стеку значення CS: EIP, вказують на команду, яка буде виконуватися слідом за командою, що викликала пастку; наприклад, якщо пастка сталася під час команди JMP, то збережені значення CS: EIP вказують на команду, що була метою команди JMP.

Збій - це особлива ситуація, яка не допускає точну локалізацію команди, що викликала її і не допускає перезапуску. Збої використовуються для повідомлень про деякі помилки, таких як: технічні несправності та наявність некоректних значень у системних таблицях.
Правила функціонування механізму обробки переривань і особливих ситуацій істотно залежать від режиму роботи процесора і поточних установок деяких прапорів в регістрі CR4. Сам цей механізм включає такі елементи:

  1. таблиця дескрипторів переривань IDT (у реальному режимі - таблиця векторів переривань);

  2. регістр таблиці дескрипторів переривань IDTR;

  3. прапорці маскування зовнішніх переривань FLAGS.IF;

  4. прапорець підтримки віртуальних переривань EFLAGS.VIF, EFLAGS.VIF;

  5. спеціальні типи дескрипторів шлюзів


Спеціальна таблиця (див. рис. 1), так звана таблиця векторів переривань або просто таблицею переривань, розміщується в пам'яті за нульовим адресою (за замовчуванням). Кожному вектору переривання або особливої ​​ситуації в цій таблиці відповідає 32-бітове поле, яке містить дальній покажчик на процедуру обробник. Процесор автоматично вибирає з пам'яті відповідний покажчик при вступі переривання або генерації особливої ​​ситуації, а потім: зберігає в стеку поточні значення CS: (E) IP, (E) FLAGS, очищає біти IF, TF, RC, AC регістра FLAGS і передає керування по підрахованій адресі (див. рис. 2).

Початкова адреса таблиці векторів переривань (за умовчанням 0) в процесорах починаючи з Intel286 може бути перевизначений шляхом програмування регістра IDTR за допомогою команди LIDT. Однак для збереження сумісності з програмним забезпеченням процесорів 8086/8088 таке перевизначення практично не практикується.

Якщо при обробці надійшов запиту на переривання процесор перевищить межу стекового сегмента, то має генеруватися переривання 12. Однак деякі моделі процесорів можуть зупинятися, якщо під час вступу запиту значення в регістрі стека (E) SP дорівнює 1, 3 чи 5.



Рис. 1 – Таблиця векторів переривань в реальному режимі роботи


Рис. 2 – Стек після виклику переривання або особливої ситуації в реальному режимі роботи
скачати

© Усі права захищені
написати до нас