- •Електроніка і мікропроцесорна техніка
- •Луцьк 2002
- •Тема 1. Транзистори
- •Тема 2. Логіка.
- •Алгебра логіки Висловлювання і числення висловлювань
- •Закони алгебри логіки
- •Тема 3. Системи числення. Арифметичні дії над числами в двійковій системі числення
- •Тема 4. Вузли еом
- •4.1. Суматор
- •4.2. Послідовний суматор
- •4.4. Дешифратор
- •4.5. Перетворювачі з цифровою індикацією.
- •4.6. Перетворювач коду 8421 в 2421
- •4.7. Програмована логічна матриця (плм)
- •4.8. Накопичуючий суматор
- •Тема 5. Основні принципи програмування мікропроцесора
- •Способи адресації
- •Прапорці
- •Завдання по темі 5
- •Завдання до задачі № 2.
- •Примітка. Всі константи задані в шістнадцятковому коді. Завдання до задачі № 3
- •6. Рішення технологічних задач з допомогою мікропроцесора
- •Нехай необхідно рахувати цифри від 0 до 10. Напрям рахунку може бути від 0 до 10 і навпаки від 10 до 0 з кроком 1. Блок-схема алгоритму (структурна схема / програми зображена на рис. 8.1, а,б.)
- •Тема 7. Опис режиму програмованого вводу/виводу в мікропроцесорному комплекті кр 580
- •Основні операції мікропроцесора
- •2. Структурна схема мпк для виконання операцій.
- •Системний контролер і шинний формувач
- •Завдання на роботу по темі 7.
- •Тема 8. Підключення дисплею та клавіатури до еом
- •Організація вводу інформацій і завдання режиму роботи.
- •Тема 9. Організація пам’яті. Операційна система еом
- •9.1. Організація пам'яті
- •9.2. Операційна система еом.
- •Завдання на самостійну роботу по темі 9.
- •Тема 10. Основи програмування логічної моделі мікропроцесорного контролера Реміконт р-130
- •10.1. Призначення і функціональні можливості логічної моделі р-130
- •3. Принципи програмування
- •4. Основні алгоритми логіко-програмного управління
- •5. Правила побудови програми.
- •Додаток 1.
- •Система команд мп кр580вм80
- •Т а б л и ц а пз. 1. Коды регистров
- •43018, М.Луцьк, вул.Львівська, 75
Способи адресації
Для зберігання багатобайтних даних (команд і операндів) в МП КР580 ВМ80 є такі способи адресації даних в пам’яті або регістрах:
1 – пряма - другий і третій байти команди містять точну адресу комірки пам’яті, в якій зберігаються дані. Молодші біти адреси зберігаються в другому байті, старші - в третьому;
2 – регістрова - команда вказує регістр або пару регістрів, де зберігаються дані;
3 – уявна регістрація - команда вказує пару регістрів, в яких містяться адреси комірки пам’яті, де розміщені потрібні дані;
4 – безпосередня - в команді вбудовані дані.
Команда переходу визначає адресу наступної команди, яку треба виконати або прямо через другий і третій байти, де вказується адреса команди, яку треба виконати безпосередньо після переходу; - або уявно регістрово, де вказується пара регістрів, в яких і знаходиться адреса наступної команди, що буде виконуватися.
Виконання команд проводиться згідно з логікою роботи процесора. Мікропроцесор може виконувати і логічні операції АБО, І, НІ. Розглянемо різницю між традиційними логічними пристроями і “запрограмованими”. Нехай, МП повинен виконати логічну функцію “І”.
Схема “І”, основана на МП, вимагає наявності вхідного порту для виходів схеми. МП, виконуючі логічні команди, що зберігаються в пам’яті, виконує функцію “І”. Для одного виходу схеми “І” треба тільки 1 розряд у вихідному порті. Програма, що реалізує функцію “І” складається з наступних команд: по кроках: див. рис.5.1.
Крок 1. Зчитати дані з вхідного порту;
Крок 2. Перейти на крок 5, якщо всі входи мають високий рівень, якщо не мають - продовжити виконання;
Крок 3. Встановити низький рівень на виході;
Крок 4. Перейти на крок 1;
Крок 5. Встановити високий рівень на виході;
Крок 6. Перейти на крок 1.
Спочатку зчитуються дані з порту входу. Потім ці дані перевіряються на високий рівень. Якщо на всіх входах рівень високий (1), на виході встановлюється також “1”, інакше “0”, коли програма закінчується, виконується цикл з початком на кроці 1. При цьому зміни на входах постійно відображуються на виході.
Для програмування інтерфейсних схем на ввід/вивід необхідно записати в акумулятор дані, що програмують інтерфейс на відповідний режим, вказати команду вводу чи виводу, вказати номер порта інтерфейсу звідки/куди пересилаються дані.
Для програмування інтерфейсу як - порт С - порт вводу, а порт В – порт виводу в акумулятор необхідно послати число 81. В інших режимах портів це число буде інакше.
|
Рис.5.1. Блок схема алгоритму функції “І”
Прапорці
В МП КР580 ИК80 є прапорці:
Z – нуля, S – знаку, P – парності, CY – переносу, AC – допоміжного переносу. Прапорець встановлюється, якщо біт в прапорцевому регістрі рівний логічній 1 і прапорець скинуто, якщо біт рівний нулю.
Для того, щоб зрозуміти для чого існують прапорці, виконаємо сумування двох чисел
147(10) 1001 0011(2)
+ 170(10) + 0010 1010(2)
317(10) 10011 1101
В найстаршому значущому розряді появилась 1, для обліку цієї одиниці при виконанні операції додавання в процесорі і передбачено прапорець переносу С. Цей прапорець може бути перевірений командами переходів (JC, - перехід, якщо є перенос), або JCN (перехід якщо немає переносу), якщо результат менший за 256 (переносу нема) програма рахує, якщо результат ≥256, необхідно зафіксувати "1" дев'ятого знакового розряду і перейти до виконання програми, що йде за адресами команди переходу.
Розглянемо процес складання простих програм на мові Асемблер, використовуючи систему команд процесора КР 580, при цьому вказується також, для якої команди необхідно враховувати наявність і значення прапорців.
Задача 1.Скласти фрагмент програми на мові Асемблер та в машинних кодах процесора КР 580 для виконання операції зміни вмісту комірок з адресами А012 і А1F2. Для ознайомлення можна допустити, що всі команди однобайтні.
Рішення: 1) Завантажимо адресу А012 (два байти в двобайтний регістр М:
LXI H |
Команда завантаження |
12 A0 |
Адреса |
MOV B,M |
Пересилаємо вміст регістру М в регістр В |
LDA |
Команда завантажування акумулятора прямо |
F2 A1 |
Адреса |
MOV M, A |
Пересилаємо з акумулятора в регістр М |
MOV A,B |
Пересилаємо з регістра В в акумулятор |
і накінець напряму завантажимо комірку з адресою А0 F2 даними з акумулятора:
STA |
Команда |
F2 A0 |
Адреса |
Завдання виконано.
2. Приклад.Які операції буде виконувати МП по реалізації фрагменту програми ?
MVI A
14
SUI
2D
Рішення: по команді MVI A, 14 проходить завантаження в акумулятор числа 14(16)=00010100(2), по команді SUI 2D проходить операція віднімання від 14(16) числа 2D(16), що в двійковому коді реалізується як
00010100
00101101
знак (-) 11100111(2)= -Е7(16)
В мікропроцесорі ця операція реалізується шляхом додавання числа 14(16) і числа 2D(16) записаного в додатковому коді (див. тему 3).
3. Приклад. Проаналізувати фрагмент програми, вибрати комірки адресного поля ОЗП, куди записати програму. Записати коментарі до виконання команд:
MVI A
OE
ADO L
JNZ
адреса повернення наступної операції
MOV A, C
INR, A
MOV C, A
4. Приклад.Проаналізувати фрагмент програми. Скласти блок схему фрагменту і записати цей фрагмент програми в машинних кодах процесора КР 580.
Рішення: Записуємо всі команди і константи в адресне поле ОЗП, починаючи з А005, див. табл.
Адреса комірки |
Мнемокод |
Машинний код |
Коментарі | |
. . . |
. . |
…. |
….. | |
А005 |
MVI, A |
3F |
А ← < B2> | |
06 |
OE |
OE |
| |
07 |
ADDL |
85 |
| |
08 |
JNZ |
C2 |
A ← (A)+(L) | |
09 |
OC 0A |
} |
|
Перехід до АООС, якщо (А) ≠ 0 адреса переходу |
А0 | ||||
0В |
MOV A, C |
79 |
A ← (C) | |
0С |
INR, A |
3C |
A ← (A)+1 | |
0D |
MOV C, A |
4F |
(C) ← (A) |
Блок-схему алгоритму пропонуємо скласти самостійно.
Приклад 5. Скласти програму для обчислення величини у за залежністю у= (37-30/2):2+11. Для множення та ділення використати операції зсуву.
Рішення: Всі операнди переводимо в 16–кову систему числення, для операції множення і ділення на 2, 4, 8 використовуємо команди RAR
Записуємо програму на мові Асемблер:
MVI A 25 MOV B, A 1E RAR MOV C, A MOV A, B SUB C RAR ADI OB HLT |
Пропонуємо цю програму самостійно привести до вигляду, котрий може бути реалізований на конкретному мікропроцесорному пристрою по вибору студента. |
Приклад 6.Скласти програму для обчислення величини
число х надходить через умовний порт 05, число у – через умовний порт 08, число z повинно зберігатись у комірці під адресою А 233.
x,y, z- цілі числа, що знаходяться в межах від –127...0…+127.
Рішення: |
Команда SUI - D6 команда безпосереднього віднімання 2 байту операнда, що йде за командою від вмісту акумулятора, результат – в А інші команди знайомі по попередніх прикладах. Пропонуємо це рішення продовжити самостійно. | |
А000 |
IN | |
А001 |
08 | |
A002 |
MOV B, A | |
A003 |
IN | |
A004 |
05 | |
A005 |
MOV C, A | |
A006 |
SUI | |
A007 |
08 | |
A008 |
TP | |
A009 |
11 | |
A00A |
AO | |
A00B |
MOV A, C | |
A00C |
ADO B | |
A00D |
STA | |
A00E |
33 | |
A00F |
AO | |
A010 |
HLT | |
A011 |
MOV A, C | |
A012 |
SUB B | |
A013 |
STA | |
A014 |
33 | |
A015 |
AO | |
A016 |
HLT |