- •Мікропроцесорна техніка
- •Мікропроцесорна техніка
- •Вступ....................................................................................5
- •Типові 8- та 16- розрядні мікропроцесори
- •5. Організація взаємодії мп з зовнішнім
- •1 Основні терміни. Структура та функціонування мікропроцесорної системи
- •2. Представлення чисел і елементи двійкової арифметики в цифрових пристроях
- •2.1 Позиційні системи числення
- •Шістнадцяткова система
- •Двійкова арифметика
- •Форми представлення чисел
- •3 Загальна характеристика та класифікація мп. Родини та комплекти мп.
- •Огляд мікропроцесорів відомих фірм-виробників
- •4 Типові 8- та 16- розрядні мікропроцесори для побудови мпс
- •4.1 Восьмирозрядний мікропроцесор 8080а
- •4.1.1 Архітектура і режими роботи мікропроцесора Архітектура мікропроцесора к580вм80а
- •4.1.2 Проектування центрального процесора
- •4.1.3 Система команд мп
- •4.2.1 Загальна характеристика ,архітектура та функціонування мікропроцесор
- •Архітектура мікропроцесора
- •Адресування пам'яті і організація вводу-виводу
- •Режими адресації
- •4.2.2 Система команд мікропроцесора вм86
- •5. Організація взаємодії мп з зовнішнім середовищем.
- •5.1 Інтерфейс
- •5.2 Порти вводу-виводу
- •5.3 Організація взаємодії елементів мпс
- •5.4 Типові методи вводу-виводу інформації в мпс
- •5.5 Інтерфейс з пзп
- •Інтерфейс з озп
- •Інтерфейс портів вводу/виводу
- •5.8 Загальні засади синтезу дешифраторів зовнішніх пристроїв
- •6 Пам’ять мікропроцесорних пристроїв
- •6.1 Основні характеристики і класифікація запам’ятовуючих
- •6.2 Надоперативні і оперативні запам’ятовуючі пристрої
- •6.3 Постійні запам’ятовуючі пристрої
- •Запам’ятовуючі пристрої з послідовним доступом
- •6.4 Організація модулів пам'яті мпс
- •7. Інтерфейсні віс для проектування мпс
- •7.1 Програмований адаптер паралельного інтерфейсу
- •7.2 Програмований зв’язковий адаптер
- •7.3 Програмований інтервальний таймер
- •8 Однокристальні мікроЕом
- •8.1.1 Мікроконтролер мк 51
- •Арифметико-логічний пристрій
- •Доступ до зовнішньої і резидентної пам’яті
- •Типи операндів та способи адресації
- •Команди логічних операцій
- •Команди операцій з бітами
- •Команди передачі керування
- •8.1.2 Родина мк52
- •8.1.3 Перспективна розробка фірми analog devices
- •8.2 Мікроконтролери фірми microchip
- •Основи програмування на мові Асемблера
- •Формат бланка асемблерної програми
- •9.2 Директиви асемблера
- •9.3 Макрокоманди
- •10 Загальні засади і особливості програмування та відлагодження мікропроцесорних пристроїв
- •10.1.2 Етапи проектування мпс
- •10.2.1 Системи програмування
- •10.2.2 Засоби трансляції і компіляції
- •10.2.3 Засоби редагування зв’язків і компоновки
- •10.3 Засоби відлагодження мікропроцесорних систем
- •Засоби для контролю та відлагодження аз мпс
- •10.3.1 Засоби відлагодження мікропроцесорних програм
- •10.3.2 Засоби комплексного відлагодження мпс
- •11.Когутяк м.І.Мікропроцесорний комплект к580 і його використання в керуванні.Навчальний посібник.- Івано-Франківськ ,2000.-96с.
- •13. Когутяк м. І.Однокристальні мікроЕом.Родина мк51 .Навчальний посібник.- Івано-Франківськ ,2000.-56с
9.2 Директиви асемблера
При розробці асемблер-програми часто користуються псевдокомандами, які є вказівками для програми-асемблера про виконання певних дій в процесі асемблерування. Вони не породжують команди об’єктної програми і їх часто називають директивами асемблера. Директиви визначають порядок асемблерування, розміщують в пам’яті інформацію, присвоюють числові значення символьним позначенням, резервують пам’ять і виконують інші дії.
Директиви підпорядковані стандартному формату операторів асемблера, але вміст їх полів дещо інший, наприклад, в полі мітки директив MACRO, EQU i SET має обов’язково знаходитись символьна змінна, яка не завершується двокрапкою. В інших директивах в полі мітки може бути необов’язкова мітка, аналогічна міткам машинних команд. Мітка директиви відноситься до комірки пам’яті, яка іде зразу ж за останньою коміркою попередньої машинної команди. Операнди директив необов’язкові.
Директива ORG. Директива ORG (початок) має такий формат:
Мітка |
Код |
Операнд |
Коментар |
[мітка: ] |
ORG |
<вираз> |
;формат директиви ORG |
Елемент формату в квадратних дужках є не обов’язковим. Значенням виразу директиви ORG є допустима 16-бітова адреса, яка визначає комірку пам’яті, в яку буде завантажуватись перший байт наступної команди або байт даних. До нової директиви ORG команди і дані розміщуються в суміжних комірках пам’яті. Якщо на початку програми відсутня директива ORG, то розуміють наявність директиви ORG з нульовим операндом.
При необхідності в програмі може бути декілька директив ORG:
Мітка |
Код |
Операнд |
Коментар |
|
ORG |
100H |
; Задати абсолютну ; адресу 0100Н |
|
LXI |
H, AREA1 |
; Адреса=100Н |
|
LXI |
D, AREA2 |
; Адреса=103Н |
|
MOV |
A,M |
; Адреса=106Н |
NEW: |
ORG |
200H |
; Задати абсолютну ; адресу 0200Н |
|
RAL |
|
; Адреса=0200Н |
|
ANA |
D |
; Адреса=0201Н |
Підкреслимо, що мітка NEW відноситься до комірки з адресою 0107, яка слідкує за коміркою з командою MOV A,M. Комірки 0107-01FF включені в об’єктну програму, але їх вміст не визначений.
Директива ORG може виконувати функції резервування пам’яті, наприклад, в такому фрагменті вона резервує 20 байтів:
Мітка |
Код |
Операнд |
Коментар |
|
MOV |
A,M |
|
|
RAL |
|
|
|
JMP |
LOWER |
|
|
ORG |
¤+20 |
|
LOWER: |
ORA |
A |
|
Директива END. Формат директиви END:
Мітка |
Код |
Операнд |
Коментар |
[мітка: ] |
END |
|
;Формат ;директиви END |
Ця директива інформує програму асемблер про досягнення фізичного кінця вхідної програми. В кожній програмі в останній строці може бути одна директива END.
Директива EQU. Директива EQU ( прирівняти, присвоїти ) прямого присвоєння має такий формат:
Мітка |
Код |
Операнд |
Коментар |
<ім’я> |
EQU |
<вираз> |
; формат директиви EQU |
При виконанні директиви EQU програма-асемблер присвоює значення виразу символьній змінній (позначенню), що знаходиться в полі мітки. Коли змінна зустрічається в полі операнда, програма-асемблер підставляє замість неї присвоєне значення:
Мітка |
Код |
Операнд |
Коментар |
MASK |
EQU |
0F H |
; Змінна MASK |
|
*** |
|
; рівна 15 |
|
ANI |
MASK |
|
|
*** |
|
|
|
CPI |
MASK |
|
|
*** |
|
|
|
MVI |
A, MASK |
|
|
*** |
|
|
В командах ANI,CPI,MVI замість MASK буде фігурувати код 00001111. Якщо з деяких причин в програмі необхідно змінити значення MASK, то необхідно модифікувати операнд однієї директиви EQU і виконати повторне асемблерування програми.
Кожне символьне позначення змінної може появитись в полі мітки тільки однієї директиви EQU. При програмуванні необхідно згрупувати всі директиви EQU на початку або в кінці програми.
Директива SET. Директива SET (установити) має такий же формат і виконує такі ж дії, як і директива EQU. Одначе символьній змінній можна переприсвоїти нове значення за допомогою нової директиви SET:
Мітка |
Код |
Операнд |
Коментар |
NAME |
SET |
15 |
; Значення NAME рівне 15 |
|
*** |
|
|
|
MVI |
B, NAME |
; Завантажити 15 в регістр В |
NAME |
SET |
1F H |
; Значення NAME стає 31 |
|
*** |
|
|
|
ADI |
NAME |
; Добавити 31 |
|
*** |
|
|
|
CPI |
NAME |
; Порівняти з 31 |
|
*** |
|
|
Директива IF i ENDIF. Директива умовного асемблерування IF (якщо) і ENDIF (кінець якщо) використовується в асемблерних програмах таким чином:
Мітка |
Код |
Операнд |
Коментар |
[мітка: ] |
IF |
<вираз > |
; Директива умовного |
|
*** |
|
|
|
Оператори |
|
; асемблерування |
|
*** |
|
|
[мітка: ] |
ENDIF |
|
|
В процесі асемблерування обчислюється значення виразу із поля операнда директиви IF. Якщо воно рівне нулю, оператори між директивами IF i ENDIF ігноруються і не включаються в об’єктну програму. Коли ж значення виразу відрізняється від нуля, оператори програми асемблеруються так, щоб директиви IF i ENDIF були відсутніми.
Директиви умовного асемблерування корисні в тому випадку, коли програма складається з більшого числа сегментів і при асемблеруванні необхідно деякі сегменти виключити з об’єктної програми, наприклад, із-за наявності зміни в конфігурації МП-системи. Кожний сегмент обмежений директивами IF i ENDIF i для виключення сегменту значення операнда відповідної директиви IF прирівнюється до нуля, наприклад при допомозі директиви EQU.
Директива DB. Директива DB (визначити байт) відноситься до групи директив означення, яка використовується для ініціалізації даних і резервування пам’яті. Формат директиви DB має наступний вигляд:
Мітка |
Код |
Операнд |
Коментар |
[мітка: ] |
DB |
<список> |
; Формат директиви DB |
Операнд директиви DB може бути послідовністю виразів, розділених комами і такі, що мають 8-бітові значення, або ланцюжок символів, обмежених апострофами. При виконанні директиви DB значення виразів або коди символів запам’ятовуються в суміжних комірках пам’яті (байтах), які починаються за комірками попередньої команди. Приклади використання директиви DB:
Мітка |
Код |
Операнд |
Коментар |
M1: |
DB |
3,7,15,31 |
; Запам’ятовуються |
|
*** |
|
; чотири значення |
|
DB |
‘HELLO’ |
; Запам’ятовуються |
|
*** |
|
; п’ять символів |
OMPL: |
DB |
-63 |
; Додатковий код - ; 63 |
Директива DW. Директива DW (визначити слово - два байти) також відноситься до директив означення і має такий же формат, як і директива DB. Одначе тут списком є послідовність виразів, які мають 16-бітові значення. При виконанні директиви DW обчислюється значення першого виразу і його молодші 8 бітів запам’ятовуються за поточною адресою, а старші 8 бітів запам’ятовуються за адресою на одиницю більшу за попередню. Далі визначається значення другого виразу, процедура запам’ятовування повторюється для наступних комірок пам’яті і т.д.. Приведемо приклад використання директиви DW:
Мітка |
Код |
Операнд |
Коментар |
ADDR: |
DW |
0FF00H |
; (ADDR)=00H |
|
|
|
; (ADDR+1)=FFH |
DATA: |
DW |
100H,200H |
; Ініціалізувати 4 комірки |
Директива DS. Директива DS (означати пам’ять) має такий формат:
Мітка |
Код |
Операнд |
Коментар |
[мітка: ] |
DS |
<вираз> |
; формат директиви DS |
Обчислене значення виразу з поля операнда визначає число комірок (байтів) пам’яті, які резервуються для запам’ятовування даних. Ніякі значення в цих комірках не запам’ятовуються, зокрема, не можна вважати, що ці комірки містять нулі. Адреса наступного оператора рівна сумі адреси оператора, який передує директиві DS i значення виразу директиви DS. Приклади використання директиви DS:
Мітка |
Код |
Операнд |
Коментар |
ARRAY: |
DS |
32 |
; Резервується 32 комірки |
TABLE: |
DS |
64 |
; Резервується 64 комірки |
Асемблер МК51 дозволяє означити символьні імена, як адреси внутрішніх (псевдокоманда DATA), зовнішніх даних (XDATA) або адреси бітів (псевдокоманда ВІТ).
Приклади застосування даних псевдокоманд:
FLAG BIT 25H.3 |
;Присвоїти символьне ім’я FLAG 3 ;біту комірки ОЗП з адресою 25Н |
X BIT P1.0 |
;і Х-0 біту порту Р1 |
CODE_EX DATA 20H |
;Присвоїти символьне ім’я |
|
;адресі 20Н комірки РДП |
Для покращення зовнішнього виду і зручності документування в асемблері можуть використовуватись наступні директиви:
SPC (пропуск стрічки), яка означає, що при друці лістінга необхідно пропустити одну строку;
PAGE (сторінка), яка при друці лістінга викликає перехід на наступну сторінку;
TITLE (заголовок), яка викликає перехід на наступну сторінку з друком зверху сторінки заголовку програми, введеного програмістом.