Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Зовнішні переривання




Запити на зовнішні переривання надходять до МП за двома входами: INTR та NMI, і самі переривання поділяються на масковані й немасковані. Запити на масковані переривання зазвичай надходять на вхід програмованого контролера переривань (ПКП) КР1810 ВН59А, який формує сигнал, що подається на вхід INTR МП. Переривання по входу INTR можуть бути масковані шляхом запису „0” або „1” до розряду ІF регістру флагів F.

ПКП ВН59А може використовуватись як з МП ВМ86, так і з МП ВМ80, причому його робота залежить від типу МП. При роботі з ВМ80 ПКП у відповідь на 1-й сигнал підтвердження переривання видає на ШД код команди CALL, яка ініціює видачу МП ще 2-х сигналів та , за якими ПКП видає 2 байта адреси програми обробки переривань.

З ВМ86 ПКП у відповідь на сигнал не видає даних і його буфер даних відключений, але за 2-им сигналом ПКП передає в МП байт, що визначає тип (вектор) переривання, тобто є два машиних цикла обслуговування переривань: 1-й, коли МП інформує ПК, що запит прийнятий, 2-й, коли ПКП передає до МП вектор переривань.

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

Якщо ІF = 0, то переривання по входу INTR заборонені (замасковані). Якщо ІF = 1, то переривання обробляються. Стан флагу ІF може бути встановлений програмним шляхом, за допомогою команд STI (встановлення), CLI (скидання), які тотожні командам ЕІ (дозвіл на переривання) і DI (заборона переривання) МП ВМ80.

Запити на немасковані переривання надходять по входу NMI і зазвичай використовуються у „катастрофічних” ситуаціях (аварійний перепад напруги, виявлення помилки пам’яті). Вхід NMI сприймає перехід сигналу з 0 до 1 (додатній фронт), щоб поточна програма не переривалась від одного й того ж сигналу NMI = 1 декілька разів. Запити NMI запам’ятовуються і мають вищий пріоритет, аніж переривання по входу INTR. Обробка немаскованих переривань не залежить від стану прапорця ІF. Немаскованим переривання присвоюється фіксований код типа 2, який автоматично формується всередені МП. Тому, у відповідь на NMI цикли підтвердження переривання INTA не формуються і реакція МП на немасковані запити переривань прискорюється.

Зовнішні переривання є асинхронними по відношенню до дій МП і мають параметри наведені у таблиці 2.1.

 

 

Таблиця 2.1.

Вид переривання Тип переривання Пріоритет
  Помилка при діленні    
  За командою INTn 5 – 31  
  За командою INT0    
  За командою INT3    
  За входом NMI    
  За входом INTRn 32 – 255  
  За флагом T    

1.3.3. Внутрішні та програмні переривання.

Внутрішні та програмні переривання характеризуються типом, який або визначається заздалегідь (0 – 4), або знаходиться у коді команди (5 – 31) і зокрема:

1) тип 0 (помилка при діленні) генерується МП після виконання команд ділення DIV, IDIV, якщо формат частки перевищує формат отримувача (тобто регістрів, що використовуються), або у разі ділення на нуль;

2) тип 4 (переривання при переповнені) формується МП за однобайтовою командою INT0, якщо в результаті виконання будь-якої команди програми флаг переповнення ОF = 1, тобто команда INT0 – це переривання при переповненні;

3) тип 1 (пошагове переривання) формується автоматично при встановленні флага Т = 1, і яке діє відразу після виконання будь-якої поточної команди. При виконанні однокрокового переривання МП виконує низку операцій, а саме: запис до стеку всіх флагів F, вмісту регістрів CS та IP, після чого скидаються флаги І та Т. По закінченні виконання підпрограми і отримання команди IRET (повернення з підпрограми) зі стека витягуються і записуються у МП флаги F і вміст регістрів ІР та CS.

Rem. МП ВМ 86 не має команд встановлення і скидання прапорця Т, більш того, відсутні команди, які б дозволили організовувати пересилки між старшими байтами регістра F та загальними регістрами МП. Стан флага Т можна змінити, діючи на нього після включення регістра F до стеку. Для включення регістра F і витягнення його зі стеку передбачені відповідні команди PUSHF, POPF. Значення Т = 1 встановлюється об’єднанням за логічною операцією “АБО” вмісту регістра F з константою 0100, а Т= 0 – об’єднанням по І з константою FEFF. Якщо встановлене Т = 1, то перше покрокове переривання буде мати місце після команди, що є наступною за командою повернення з підпрограми обробки покрокових переривань.

4) тип n (5 – 31) визначається користувачем при написанні програми і виконується по двох байтовій команді INTn, де n задається у другому байті команди. Команда INTn викликає необхідну програму, як і команда CALL, але при переході до підпрограми команда INТn виконує запам’ятовування не лише адреси повернення (ІР, CS) але й регістра F.

5) тип 3 викликається однобайтовою командою INT3 і визначається як переривання контрольної точки (точки розриву).

Rem. Контрольною точкою може бути будь-яке місце у програмі, де її нормальне виконання переривається і під час відлагодження вживаються деякі спеціальні заходи як то: індикація вмісту регістрів, чарунок пам’яті, портів вводу/виводу, а також для вставлення додаткового фрагмента програми без повторної трансляції.

1.3.4. Процедура обслуговування переривань.

Усі типи внутрішніх переривань мають ряд спільних ознак:

1) код переривання повідомляється МП командою або включається в команду переривань;

2) на виході МП не формуються сигнали;

3) за винятком переривання однокрокового типу, внутрішні переривання не можуть бути відключені;

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

Зв’язок між кодом, що визначає тип переривання, і підпрограмою обслуговування переривання встановлюється за допомогою таблиці покажчиків векторів переривання (Табл. 2). Вектори переривання займають 1Кб адресного простору (00000 – 003FF), при чому кожен вектор займає 4 чарунки пам’яті. Дві молодші адреси у векторі використовуються для запису зміщення у сегменті, а два старших байта – для базової адреси сегмента.

Таблиця 2.2.

Адреса Тип Коментар  
  Тип 0 (ОД) Переривання за помилкою ділення  
  Тип 1 (ПР) Покроковий режим  
  Тип 2 (NMI) Переривання по NMI  
0000С Тип 3 Переривання по INT3  
  Тип 4 Переповнення INT0  
  Тип 5 Резерв  
............................. ...................... ................................................  
0007С Тип 31 Резерв  
  Тип 32 Користувача  
.............................. ...................... ..............................................  
  003FC Тип 255 Користувача
  003FF
             

 

Rem. Тобто кожен елемент таблиці містить 2 слова, які визначають початкову логічну адресу підпрограми. При переході на підпрограму зміщення завантажується до ІР, адреса сегмента – до регістру CS. Оскільки розмір кожного елемента таблиці складає чотири байта, МП вираховує адресу (зміщення) потрібного елементу шляхом множення типа переривання на 4.

Формування адреси передачі керування на відповідну підпрограму обслуговування переривання в BIU відбувається так само, як і при звернені до будь-якої чарунки пам’яті, а саме: вміст двох молодших адрес вектора переривання записується в регістр ІР, вміст старших байтів – записується в регістр CS. Після цього вміст CS зміщується на чотири розряди вліво і додається до вмісту ІР, а отримане таким чином 20-розрядне число визначає фізичну адресу початку підпрограми переривання.

Коли виконується перехід до підпрограми обслуговування переривань вміст регістра F (разом з CS та IP) запам’ятовуються у стеку, після чого флаги І, та Т скидаються, чим автоматично забороняються зовнішні переривання по входу INTR (що необхідно для захисту початкової ділянки підпрограми, в якому відбувається включення до стеку внутрішніх регістрів МП). Потім підпрограма може дозволити зовнішні переривання командою STI, крім того, вона може бути перервана запитом по входу NMI і внутрішніми перериваннями. Необхідно слідкувати, щоб у підпрограмі не виникало переривань того ж самого типу, яке вона обслуговує, оскільки це призведе до нескінченого виклику тієї ж самої процедури.

В кінці підпрограми обслуговування переривань відновлюється вміст регістрів МП, які були включені до стеку на початку підпрограми з метою збереження даних, які відносяться до перерваної програми. Цю ділянку підпрограми треба захищати за допомогою команди CLI від переривань по входу INTR. Підпрограми обробки переривань мають закінчуватися командою повернення з переривання IRET, якій передує команда дозволу переривань STI. Перед виконанням команди IRET стек має бути у тому ж самому стані, що він був відразу після виклику підпрогами, що дозволяє команді IRET витягнути зі стеку три верхніх слова в регістри IP, CS, F. Це забезпечує повернення до тієї команди програми, яка б виконувалася наразі відсутності переривання.

1.4 Система і формат команд МП ВМ86.

Система команд МП ВМ86 має практично всі команди, які використовуються у МП ВМ80, а також команди, які виконують істотно нові функції, а саме:

1) команди множення і ділення двійкових та неупакованих десяткових чисел зі знаком і без знаку;

2) команди роботи з масивами чисел, у тому числі команди переміщування, сканування і порівняння масивів даних довжиною до 64Кб;

3) команди тестування вмісту окремих бітів чисел;

4) команди перетворень кодів з одного типу в інший;

5) команди програмного формування переривань;

6) групу команд, які використовуються для координації роботи мультипроцесорних систем.

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

Rem. Система команд МП ВМ86 може бути представлена в двох видах: на мові асемблера і в машинних кодах. На мові асемблера система команди являє собою біля 100 різних типів команд. Так, команда MOV використовується для передачі байта даних або машинного слова, які розміщені у пам’яті, регістрі або задані у команді за вказаною адресою до пам’яті або регістру. В машинних же кодах в залежності від джерела даних і місця призначення команда MOV має 28 різних кодів.

 

Характеристика різних функцій, які виконуються командами:

1. Команди передачі даних – використовуються для передачі байта або машинного слова між пам’яттю або регістрами, а також між регістрами AL, AX і пристроями вводу/виводу. Команди завантаження сегментних регістрів і команди роботи зі стеком також входять до цієї групи.

2. Команди арифметичних операцій дозволяють проводити арифметичні операції з чотирма різними типами подання чисел: двійковим зі знаком і без знаку, з упакованими та неупакованими десятковими числами зі знаком і без знаку. Стан АЛП МП при виконанні арифметичних команд відображається 6 флагами: C (Carry), AC (Auxiliary Carry), S (Sign), Z (Zero), O (Overflow). Флаг О = 1 якщо результат виконаної арифметичної операції перевищує розрядність МП. Команди арифметичних операцій можуть проводити додавання, віднімання, множення і ділення над одно- і двобайтовими числами.

3. Команди роботи з бітами чисел дозволяють перетворювати вміст окремих розрядів одно- і двобайтових чисел. До них відносяться логічні команди, команди зсуву (SHIFTS) і переміщення (ROTATE).

3.1. Логічні команди включають в себе:

- доповнення одно- та двобайтових чисел;

- логічні “І”, “АБО”, логічне виключаюче АБО”, а також команду TEST, яка реалізує логічне “І” між двома байтами або словами. Ця команда не змінює вмісту операндів, а впливає лише на флаги МП і призначена для перевірки стану бітів окремих чисел.

3.2. При виконанні зсувів вміст бітів в байтах або словах може зсуватися арифметично або логічно. Згідно з командою може забезпечуватися до 255 зсувів. Кількість зсувів визначається в команді або константою, або береться з регістру CL. Арифметичний зсув використовують у командах ділення і множення чисел, кратних двом. Логічний зсув – для збереження вмісту окремих розрядів при проведенні різних операцій з байтами або словами. Після виконання команд стан флагу АС не визначений. Флаги P, Z, S зазвичай обнуляються. Флаг С завжди містить значення останнього зсунутого розряду. Після виконання багаторозрядного зсуву стан флагу О не визначений. При виконанні однорозрядного зсуву О = 1, якщо в результаті виконання команди старший (знаковий) розряд був змінений, в іншому випадку флаг О обнуляється.

3.3. Команди переміщення забезпечують переміщення вправо або вліво вмісту розрядів байта або машинного слова. Кількість зсувів визначається в команді або константою, або береться з регістру CL. При переміщенні може буди задіяний і флаг С. При переміщеннях змінюються лише два флаги – С і О. Вміст С завжди відповідає вмісту останнього з переміщених розрядів числа. Стан О залежить від виду переміщення. Після виконання багаторозрядного переміщення стан прапорця О не визначений. При виконанні однорозрядного переміщення О = 1, якщо в результаті виконання команди старший (знаковий) розряд був змінений.

4. Команди роботи з масивами дозволяють проводити п’ять основних операцій з масивами одно- та двобайтових чисел (до 64 Кб), а саме: переміщення чисел, порівняння, сканування (для знаходження значень), запис чисел з акумулятора в масив і навпаки. Кожну з цих команд можна циклічно повторювати за допомогою використання спеціальної однобайтної префікс-команди. Таке циклічне повторення може бути завершене по виконанні вказаної у префікс-команді умови. Команди роботи з масивами включають в себе вказівку на джерело операнда, або приймача операнда, або на приймача і джерело одночасно.

Rem. Як правило, вказівка на джерело операнда міститься в сегменті поточних даних DS, а джерело масива розміщується в додатковому сегменті ES поточних значень. Регістри SI, DI містять зміщення по сегментах, які відповідають масивам джерела та приймача. Тобто вміст цих регістрів має бути встановлений перед початком виконання програми обробки масивів.

5. Команди передачі керування використовуються для змінення прямої послідовності отримання і обробки команд, при якій чергова команда береться з адреси, вказаної в CS і ІР. В цьому випадку (тобто при передачі управління) МП бере команду з адреси, яка вказана в отриманій команді передачі керування, а команда, яка записана до цього в КК виключається шляхом онулення з наступним записом до нього нових адрес. Існує чотири групи команд передачі керування: умовна, безумовна, ітераційна, програмне формування переривань.

6. Команди керування роботою МП забезпечують програмне керування роботою МП, включаючи в себе також команди управління флагами, які використовуються для синхронізації роботи МП з ОП.

1.4.1 Формат команд.

В залежності від типу команд формат може змінюватись від 1 до 6 байтів. Однобайтні команди керують флагами МП або одним з його регістрів. Для більш складних команд вся інформація про довжину команди міститься у першому з двох байтів, згідно з типовим форматом, наведеним на мал.3.1.

 

Мал. 3.1. Формат команд МП ВМ86

 

Перші шість розрядів в багатобайтній команді являють собою код команди.

Розряд D (Direction) визначає напрямок команди. При D = 1 регістр, що зазначений в розрядах REG другого байта, визначається як приймач результату виконання команди, а при D = 0 – як джерело інформації.

Розряд W (Word) визначає довжину даних. При W = 1 команда оперує з двома байтами чисел, а при W = 0 – з одним байтом.

Розряд MOD – адресація до регістра/пам’яті з використання зсуву. Перші два розряди MOD в другому байті команди визначають використання командою інформації з пам’яті або з регістрів (табл. 3.1).

Розряд REG (Register) вказує на регістр, що застосовується у команді (табл. 3.2).

Розряд R/M (Register/Memory) визначає тип 2-го операнда. Якщо MOD = 11 (команда типу регістр – регістр), то R/M визначає тип другого регістра. Якщо ж MOD визначає, що другий операнд знаходиться у пам’яті, то R/M вказує, яким чином визначається його ефективна адреса, тобто зміщення, яке додається до сегменту для знаходження фізичної адреси (табл. 3.3).

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

Rem. Постійний зсув поже задаватися у команді одним байтом D8 або двома – D16. Як витікає з табл. 3.3 окрім зазначення постійного зміщення при розрахунку ефективної адреси може бути використаний вміст регістрів BP або BX, SI або DI, а також їх сума. Розряди MOD теж визначають кількість байтів постійного зсуву, що використовуються для розрахунку ефективної адреси.

Таблиця 3.1.

MOD Зміст операції
  Адресація до пам’яті без визначення змішення (крім випадку R/M = 110)
  Адресація до пам’яті з використанням 1-байтного зміщення
  Адресація до пам’яті з використанням 2-байтного зміщення
  Адресація до регістра

Таблиця 3.2.

Вміст розрядів (REG) W = 0 W = 1
  AL AX
  CL CX
  DL DX
  BL BX
  AH SP
  CH BP
  DH SI
  BH DI

 

Таблиця 3.3.

R/M EU (Ефективна адреса)  
    MOD = 00 MOD = 01 MOD = 10
  BX + SI BX + SI + D8 BX + SI + D16  
  BX + DI BX + DI + D8 BX + DI + D16  
  BP + SI BP + SI + D8 BP + SI + D16  
  BP + DI BP + DI + D8 BP + DI + D16  
  SI SI + D8 SI + D16  
  DI DI + D8 DI + D16  
  Безпосередня адресація BP + D8 BP + D16  
  BX BX + D8 BX + D16  
                 

 




Поделиться с друзьями:


Дата добавления: 2015-05-08; Просмотров: 1060; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.