
- •Застосування регістру стану мікропроцесора для організації розгалуження процесів методичні вказівки та інструкція
- •Мета роботи
- •Регiстр прапорiв I команди переходу мп
- •1. Регiстр прапорiв
- •2. Команди переходу
- •3. Однобайтнi команди збiльшення або зменшення регiстру на 1.
- •4. Застосування команд переходу
- •Змiст роботи
- •Лiтература
- •Методичні вказівки та інструкція
МIНIСТЕРСТВО ОСВIТИ І НАУКИ УКРАIНИ
НАЦІОНАЛЬНИЙ УНIВЕРСИТЕТ “ЛЬВIВСЬКА ПОЛIТЕХНIКА”
Кафедра ЕСМ
Застосування регістру стану мікропроцесора для організації розгалуження процесів методичні вказівки та інструкція
до виконання лабораторної роботи № 5
з дисципліни “Мікропроцесорна техніка в електроенергетиці”
для студентів базового напряму “Електротехніка та електротехнології”
Затверджено
на засіданні кафедри
«Електричні системи та мережі»
Протокол № 11 від 27.01. 2011 р.
Львів 2011
Застосування регістру стану мікропроцесора для розгалуження процесів: Методичні вказівки та інструкція до виконання лабораторної роботи № 5 3 з дисципліни “Мікропроцесорна техніка в електроенергетиці” для студентів для студентів базового напряму “Електротехніка та електротехнології”. /Укл. М.В. Базилевич, Б.І. Дурняк, Пазина Я.С. – Львів: Видавництво Національного університету "Львівська політехніка", 2011. – 16 с.
Укладачі: Базилевич М.В., асистент
Дурняк Б.І., асистент
Пазина Я.С., старший викладач
Відповідальний за випуск Г.М.Лисяк доц., канд. техн. наук
Рецензенти: Журахівський В.А., професор, доктор технічних наук
Мета роботи
Ознайомлення з особливостями структури регiстру стану мiкропроцесора, вивчення команд умовного та безумовного переходу та шляхiв їх використання для програмування розгалужених процесiв.
Регiстр прапорiв I команди переходу мп
1. Регiстр прапорiв
В МП КР580ВМ80 є 5 прапорiв - нуля (Z), знаку (S), парностi (P), переносу (C), додаткового переносу (AC). Кожний прапор - це один бiт регiстру стану, вмiст якого визначається вмiстом акумулятора. Прапор встановлений, якщо бiт дорiвнює 1, прапор скинутий, якщо бiт дорiвнює 0. Наприклад, прапор нуля (Z) встановлюється, тобто Z = 1, якщо вмiст акумулятора дорiвнює 0, i прапор нуля скидається, тобто Z = 0, якщо вмiст акумулятора не дорiвнює 0. Прапор знака (S) встановлюється, якщо старший бiт результату операцiї рiвний 1, в iншому випадку прапор скидається (S = 0). Прапор парностi (P) встановлюється, якщо акумулятор утримує парне число одиниць, i скидається, якщо непарне. Бiти прапорiв входять до складу так званого прапорового регiстру (регiстру стану), що складається з 8 розрядiв, з яких 5 - це бiти прапорiв, а 3 - не використовуються i мають постiйнi значення.
При виконаннi програми у кроковому режимi 2 крайнiх справа вiкна дисплею показують вмiст регiстра прапорiв. Наприклад, якщо у цих вiкнах показане число 46, то це означає, що пiднятi прапори Z i P.
2. Команди переходу
Є два типи команд переходу - безумовні та умовні. Команда безумовного переходу має позначення JMP [адр]. При виконаннi цiєї команди управлiння передається за адресою, яка знаходиться у 2 i 3 байтах команди. Команди умовних переходiв спочатку перевiряють стан одного з 4-х прапорiв, щоб визначити виконання умови в командi
JNZ [адр] - якщо вмiст акумулятора не дорiвнює 0, то управлiння передається за адресою у квадратних дужках;
JZ [адр] - те саме, але якщо вмiст акумулятора дорiвнюe 0;
JNC [адр] - те саме, якщо при операцii нема переносу;
JC [адр] - те саме, якщо є перенос;
JPO [адр] - те саме, якщо в акумуляторi непарне число одиниць; JPE [адр] - те саме, якщо в акумуляторi парне число одиниць;
JP [адр] - те саме, якщо плюс ;
JM [адр] - те саме , якщо мiнус;
Команди цієї групи змінюють нормальне послідовне виконання програми. Виконання команд не впливає на стан прапорів.
Є два типи команд переходу: безумовні та умовні. Безумовні команди переходу виконують передачу управління, змінюючи значення програмного лічильника РС. Команди умовного переходу спочатку перевіряють стан одного з чотирьох прапорів процесора, щоб визначити, виконана чи ні вказана в команді умова. Є слідуючі умови переходу:
-
Умова
Код
NZ - не ноль (Z=0)
000
Z - ноль (Z=1)
001
NC - нема переносу (CY=0)
010
C - є перенос (СY=1)
011
РО - непарний результат (Р=0)
100
РЕ - парний результат (Р=1)
101
Р - плюс (S=0)
110
М - мінус (S=1)
111
JMP [адр.] (ПЕРЕХІД)
(PC) (байт 3) (байт 2)
Управління передається команді, адреса якої вказана у другому та третьому байтах команди переходу.
|
|
|
|
|
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
|
|
|
|
|
|
Молодший байт адреси |
||||||||
|
|
|
|
|
Старший байт адреси |
JMP [адр.] С3
Цикли: 3
Стан: 10
Адресація: безпосередня
Прапори: нема
J (умова) [адр.] (УМОВНИЙ ПЕРЕХІД)
Якщо (ССС), то (PC) (байт 3) (байт 2)
Якщо вказана умова істинна, то управління передається команді, адреса якої вказана у другому та третьому байтах команди переходу. Якщо умова хибна, то послідовний код програми не змінюється.
|
|
|
|
|
1 |
1 |
С |
С |
С |
0 |
1 |
0 |
|
|
|
|
|
|
Молодший байт адреси |
||||||||
|
|
|
|
|
Старший байт адреси |
JNZ [адр.] С2
JZ [адр.] СA
JNC [адр.] D2
JC [адр.] DA
JPO [адр.] E2
JPE [адр.] EA
JP [адр.] F2
JM [адр.] FA
Цикли: 3
Стан: 10
Адресація: безпосередня
Прапори: нема
CALL [адр.] (ВИЗОВ)
((SP) - 1) (PCH)
((SP) - 2) (PCL)
(SP) (SP) - 2
(PC) (байт 3) (байт 2)
Старші 8 біт адреси слідуючої команди пересилаються в комірку пам'яті, адреса якої на 1 менша вмісту вказівника СТЕКА SP. Молодші 8 біт адреси слідуючої команди пересилаються в комірку пам'яті, адреса якої на 2 менше величини вказівника СТЕКА SP. Вміст вказівника СТЕКА зменшується на 2. Управління передається команді, адреса якої вказана у другому та третьому байтах команди визову.
|
|
|
|
|
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
|
|
|
|
|
|
Молодший байт адреси |
||||||||
|
|
|
|
|
Старший байт адреси |
CALL [адр.] CD
Цикли: 5
Стан: 18
Адресація: безпосередня/посередня регістрова
Прапори: нема
С (умова) [адр.] (УМОВНИЙ ВИЗОВ)
Якщо (ССС), то ((SP) - 1) (PCH),
((SP) - 2) (PCL),
(SP) (SP) - 2,
(PC) (байт 3) (байт 2)
Якщо вказана умова істинна, то виконуються дії, описані в команді CALL, в протилежному випадку послідовність виконання команд не змінюється .
|
|
|
|
|
1 |
1 |
С |
С |
С |
1 |
0 |
0 |
|
|
|
|
|
|
Молодший байт адреси |
||||||||
|
|
|
|
|
Старший байт адреси |
СNZ [адр.] С4
СZ [адр.] СС
СNC [адр.] D4
СC [адр.] DС
СPO [адр.] E4
СPE [адр.] EС
СP [адр.] F4
СM [адр.] FС
Цикли: 5
Стан: 18
Адресація: безпосередня/посередня регістрова
Прапори: нема
RET (ПОВЕРНЕННЯ)
(PCL) ((SP))
(PCH) ((SP) + 1)
(SP) (SP) + 2,
Вміст комірки пам'яті, адреса якої міститься у вказівнику СТЕКА SP, пересилається у 8 молодших бітів програмного лічильника РС. Вміст комірки пам'яті, адреса якої на 1 більша вмісту вказівника СТЕКУ, пересилається у 8 старших бітів програмного лічильника. Вміст вказівника СТЕКУ збільшується на 2.
|
|
|
|
|
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
RET С9
Цикли: 3
Стан: 10
Адресація: посередня регістрова
Прапори: нема
R умова (УМОВНЕ ПОВЕРНЕННЯ)
якщо (ССС), то (PCL) ((SP))
(PCH) ((SP) + 1)
(SP) (SP) + 2,
Якщо вказана умова істинна, то виконується дія, описана в команді RET, у протилежному випадку послідовність виконання команд не порушується.
|
|
|
|
|
1 |
1 |
С |
С |
С |
0 |
0 |
0 |
RNZ С0
RZ С8
RNC D0
RC D8
RPO E0
RPE E8
RP F0
RM F8
Цикли: 3
Стан: 12
Адресація: посередня регістрова
Прапори: нема
RST n (РЕСТАРТ)
((SP) - 1) (PCH)
((SP) - 2) (PCL)
(SP) ((SP) - 2)
(PC) 8*(NNN)
Старші 8 бітів адреси слідуючої команди пересилаються в комірку пам'яті, адреса якої на 1 менша вмісту вказівника СТЕКУ. Молодші 8 бітів адреси слідуючої команди пересилаються в комірку пам'яті, адреса якої на 2 менша вмісту вказівника СТЕКУ. Вміст вказівника СТЕКУ зменшується на 2. Управління передається команді, адреса якої рівна коду NNN, помноженому на 8.
|
|
|
|
|
1 |
1 |
N |
N |
N |
1 |
1 |
1 |
RST 0 C7
RST 1 CF
RST 2 D7
RST 3 DF
RST 4 E7
RST 5 EF
RST 6 F7
RST 7 FF
Цикли: 3
Стан: 12
Адресація: посередня регістрова
Прапори: нема
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
N |
N |
N |
0 |
0 |
0 |
Програмний лічильник після рестарту
PR умова (УМОВНЕ ПОВЕРНЕННЯ)
якщо (ССС), то (PCL) ((SP))
(PCH) ((SP) + 1)
(SP) (SP) + 2,
Якщо вказана умова істинна, то виконується дія, описана в команді RET, у протилежному випадку послідовність виконання команд не порушується.
|
|
|
|
|
1 |
1 |
С |
С |
С |
0 |
0 |
0 |
RNZ С0
RZ С8
RNC D0
RC D8
RPO E0
RPE E8
RP F0
RM F8
Цикли: 3
Стан: 12
Адресація: посередня регістрова
Прапори: нема
PCHL (ЗАВАНТАЖЕННЯ ВМІСТУ РЕГІСТРІВ H I L В ПРОГРАМНИЙ ЛІЧИЛЬНИК)
(PCH) (H)
(PCL) (L)
Вміст регістру H пересилається у 8 старших бітів програмного лічильника РС. Вміст регістру L пересилається у 8 молодших бітів програмного лічильника.
|
|
|
|
|
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
PCHL E9
Цикли: 1
Стан: 6
Адресація: регістрова
Прапори: нема