5.13. Стек та його використовування
Крім вказаних пристроїв зовнішньої та внутрішньої пам’яті, для яких характерне адресне звертання, в МП можлива робота з магазинною пам’яттю – стеком, при звертанні до якого не потрібна адреса. Стек використовується для виконання режиму обробки зупинок в програмах, коли потрібно негайно виконати якусь іншу частину програми, наприклад, звернутись до пристроїв вводу і отримати інформацію про вхідні дані. Тобто, включення стеку до складу МП диктується необхідністю виконання стандартних процедур вводу-виводу програмним шляхом і необхідністю обробки даних в реальному масштабі часу, що потребує постійної взаємодії системи керування і зовнішніх пристроїв через систему зупинок.
В МП використовуються 2 види стеку: вбудований та автономний.
Якщо стек виноситься із МП (автономний), то в останньому передбачено регістр – покажчик стеку ПС (SP). Відмінності автономного стеку полягають в тому, що в якості матриці, яка зберігає інформацію, використовується зовнішня по відношенню до МП оперативна пам’ять (ОЗП). Безпосередньо на кристалі розміщується тільки покажчик стеку (ПС) з розрядністю, рівній розрядності шини адреси. Тому глибина стеку може дорівнювати адресуємій ємності пам’яті (як правило до 64К, до якої можна звертатись за допомогою 16-розрядного регістра показника стеку ПС), який вміщує адресу плаваючої верхівки стеку.. Те, що міститься в покажчику стеку, зменшується (при запису) або збільшується (при читанні) на 1 при кожному звертанні до нього. Операції зі стеком виконуються в відповідності з принципом його роботи: останнім записаний – першим прочитаний (LIFO – Last-- In First - Out). Використовуються тільки 2 операції зі стеком: запис даних в стек (PUSH) та читання даних із стеку (POP). Операція запису в стек виконується для занесення в відведену під стек пам’ять 8 біт даних із пари регістрів РЗП. В момент запису у стек командою PUSH, по якій повинен бути виконаним запис, адреса ОЗУ, , що задається покажчиком стеку, спочатку зменшується на 1, а тільки потім відбувається запис числа у комірку пам’яті, тому 8-м біт зберігаються по адресі на 1 меншій, ніж значення ПС. Наприклад, ПС містить в собі адресу 278ЕН (верхівкою стеку); регістр В вміщує число – С8Н; регістр С – 21Н, а в ОЗУ скрізь записані значення FF. Виконуємо операцію PUSH B, а потім PUSH С і дані будуть записані в ОЗУ таким чином:
Вмістиме регістрів і ОЗУ до операції Вмістиме ОЗУ і регістрів після операції
.......................................... Адреса ОЗУ ............................................ .....................................................
FF 278В FF
C: 21 FF 278C 21 C: 21
B: C8 FF 278D C8 B: C8
SP: 278E FF 278E FF SP: 278E
Операції читання зі стеку (н., POP С , POP В ) виконуються у зворотному напрямі. За допомогою них відбувається виймання із відведеної під стек пам’яті 8 біт даних та їх повернення у пару регістрів. При виконанні операції POP С спочатку відбувається читання інформації із комірки п’ямяті, на яку показує показник стеку (ПС), а після читання – вмістиме ПС збільшується на 1.
Перед виконанням стекових операцій в показник стеку необхідно занести занести необхідне значення адреси верхівки стеку за допомогою команди, наприклад, для КР1816ВЕ31 - LXI SP, 278EН.
Як варіант розглянемо схему побудови магазинної пам’яті в самому МП
Рис. 5.10. Організація вбудованої магазинної пам’яті мікропроцесора
тобто, вбудований стек, який повністю розміщується на кристалі МП, по схемі рис.5.10,а. Ємність -глибина стеку не перевищує 16 – 32 слова. Вбудований стек мають МП, наприклад, фірми Intel. Вибірка однієї із комірок матриці пам’яті відбувається через дешифратор (ДшА) адресу по адресу, який знаходиться в реверсивному лічильнику адреси (УС), який є показником стеку (ПС). Початкове значення адреси надходить в ПС на вхід А у паралельному коді командою попереднього установлення. В процесі роботи стан ПС при кожному запису зменшується на 1, а при читанні збільшується на 1. Керування режимами запису та читання виконує місцевий блок керування (МБК).
При запису інформації вхідне слово Х надходить на регістр слів (РС) та записується в матрицю по адресі, яка в даний час встановлена в показнику стеку (УС, ПС). З невеликою витримкою після запису інформації те, що міститься в показнику стеку ПС зменшується на 1 і матриця підготовлюється для наступного запису (рис.10,б). Таким чином, показник стеку (УС) постійно показує на вільну комірку пам’яті, в яку необхідно записати наступне вхідне слово.
При читання із стеку в МБК спочатку виробляється сигнал, який збільшує те, що міститься в показнику стеку на 1, а потім – сигнал читання інформації із матриці пам’яті (рис. 10,в). При цьому на вихідних ланцюгах стека з’явиться слово Х, яке було записано останнім. Після послідовного запису в стек слів Х1, Х2, Х3 при першому читанні буде вибране із стеку число Х3, при другому – Х2 та при третьому – Х1.
Так як в коді команди запису в стек та читання із стеку не має адресного поля, це зменшує розрядність цих команд та підвищує швидкодію їх виконання, а також при частих переходах із запису до читання приводить до економії оперативної пам’яті МП. Але використання стеку потребує правильної послідовної організації роботи з ним. Використовувати стек краще всього в випадках коли ця послідовність фіксована.
Стек використовується: по-перше, при звертанні до підпрограм, яке виконується командою виклику підпрограми (CALL). При цьому, спочатку вмістиме лічильника команд (тобто, адреса наступної команди) та стан внутрішніх регістрів записуються в стек, де запам’ятовуються, а потім виконується підпрограма, яка викликана командою CALL . Останньою командою, яка повинна виконатись в викликаній підпрограмі, повинна бути команда RET (вихід із підпрограми), по якій із стекової пам’яті в лічильник команд записується зафіксована раніше адреса та стан регістрів, і таким чином відновлюється виконання команд програми. Це легко реалізується , якщо розміщувати вмістиме пар регістрів в стек до початку виконання підпрограми, а потім виконати читання із стеку та відновити їх стан. Але команди читання POP повинні виконуватись в інверсному порядку. Наприклад;
PUSH B PUSH D PUSH H PUSH PSW
( Тіло програми) (Букви В, D, Н – визначають пари регістрів)
POP PSW POP H POP D POP B;
по-друге - при роботі МП в масштабі реального часу, коли є необхідною постійна взаємодія з об’єктом керування, яка визиває безперервні переривання, які пов’язані з необхідністю тимчасового зберігання внутрішнього стану МП.
- Київ нухт 2011
- 1. Загальні відомості про мікропроцесор та мікропроцесорну систему
- 1.1. Мікропроцесор. Загальні положення та визначення.
- 1.2. Архітектура мікропроцесора
- 1.3. Загальна структура мікропроцесора та його функціонування
- 1.4. Поняття про мікропроцесорну систему (мпс)
- 1.5. Поняття мікропроцесорного контролера
- 2. Загальні відомості пронадання та опрацювання інформації в мікропроцесонній техніці
- 2.1. Поняття інформації та дві форми її надання
- 2.2. Фізична суть цифрової інформації та елементи її реалізації
- 3. Основи алгебри логіки
- 3.1. Загальні положення
- 3.2. Опис та задання логічних функцій.
- 3.3. Основні логічні функції алгебри логіки
- 4. Способи надання інформації в мікропроцесорі
- 4.1. Поняття систем числення в мікропроцесорній техніці
- 4.2. Дівйкова система числення та основи переведення чисел між системами числення
- 4.2.1. Перетворення двійкових чисел в десяткові.
- 4.2.2. Перетворення десяткових чисел в двійкові
- 4.3. Вісімкова та шістнадцяткова системи числення
- 5. Структурні елементи мікропроцесора
- 5.1. Поняття машинного слова, регістрів
- 5.2. Формати надання чисел в мікропроцесорах
- 5.3. Двійкова арифметика в мікропроцесорі.
- 5.4. Двійково-десяткова арифметика.
- 5.4.1 Додавання двійково-десяткових чисел без знаку.
- 5.4.2 Додавання двійково-десяткових чисел із знаком.
- 5.5. Регістр стану (psw) мп та його призначення
- 5.6. Поняття шин (bus) мікропроцесора
- 5.7. Арифметично – логічний пристрій мікропроцесора
- 5.8. Пристій вводу – виводу (пвв).
- In 07н; ввести в акумулятор дані із порту 7;
- Поняття шинних драйверів.
- 5.9. Поняття інтерфейсу
- 5.10. Передавання інформації у послідовному коді.
- 5.11. Память мікропроцесорів та опереції з нею
- 5.12. Адресний простір мікропроцесора
- 5.13. Стек та його використовування
- 6. Мови програмування мпс
- 6.1. Рівні мов прграмування мп.
- 6.1.1. Базова мова мікропроцесора.
- 6.1.2. Мова “ асемблер” (другого рівня).
- 6.1.3. Мови третього рівня.
- 6.2. Основні правила запису програм на мові асемблера
- 6.3 Програмне забезпечення мікропроцесорнихсистем та його види
- 6.4. Способи адресації в мікропроцесорній системі
- 6.5. Формати команд мікропроцесорів
- Варіанти однобайтних команд:
- 6.6. Робочий цикл виконання програми мп
- 7. Однокристальний мікропроцесорний контролер кр1816ве51…….
- 7.1. Номеклатура та порівняльні характеристики мп
- 7.2. Структурна схема мікроконтролера кр1816ве51 та призначення складових
- Призначення виводів мп кр1816ве51
- Призначення виводів мп кр1816ве51
- 7.3. Функціонування мп кр1816ве51
- 7.4. Система команд мп кр1816ве51
- In port- те, що знаходиться в порту вводу заноситься в акумулятор а
- 8. Приклади програмування на асемблері кр1816ве51
- 8.1 Форомалізований підхід до розробки прикладної програми
- 8.2. Підрахунок імпульсів
- 8.3. Функції часової витримки
- 8.4. Функції вимірювання часових інтервалів
- 8.5. Перетворення кодів між системами числення
- 8.6. Аналого-цифрове перетворення
- 8.7 Приклад програмування технічної задачі
- 8.7.1. Постановка задачі
- 8.7.2. Аналіз задачі.
- 8.7.3. Розробка схеми пристрою та інтерфейсу.
- 8.7.4. Інженерна інтерпретація задачі
- 8.7.5. Розробка блок –схеми алгоритму
- 8.7.6 Розробка прикладної програми
- Програма sezam
- Контрольні запитання з курсу
- Література
- 1..Технічне та програмне забезпечення плк “ломіконт” Функціональні можливості плк “Ломіконт”.
- Технічні характеристики Ломіконта
- 2. Фізична сруктура контролера та його склад
- На рис 1.1 приведена фізична структура л-110 з основними модулями.
- Програмування плк “ломіконт”
- ПрК задає логіку управління конкретним технологічним об”єктом.
- Порядок виконання програми контролером:
- 05 Если умова а
- 07 Если умова в
- 11 Если умова с
- 00 Если в дв015
- 01 Тогда о кс102
- 02 Иначе в кс116
- 14 Тогда алг 031 (потім виконати алгоритм 031)
- 3. Приклад програмування на технологічній мові «Мікрол»
- Програмування алгоритму
- Безпоседньо програма
- 11 Тогда о кс100 - 26 тогда тс 1.0.0
- Бібліотека алгоритмів «ломіконту»