АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Асемблерна мова мікроконтролера 8051

Читайте также:
  1. Програмна модель мікроконтролера 8051

 

Оператором мови ассемблера мікроконтролера 8051 (мови АСМ51) є рядок вихідного тексту мікроконтролерної програми (МК-програми), що має наступний формат:

<мітка>   < команда/ директива > ;<коментар>
    <операція> <операнд>  

Поле <команда/директива> є головним полем рядка і складається з поля <операція> і поля <операнда>, розділених пробілом.

Поле <операція> містить мнемонічне позначення команди або директиви асемблера, що є скороченням (абревіатурою) повного англійського найменування виконуваної дії. Наприклад: MOV - move - переслати, JMP - jump - перейти, DB - define byte - визначити байт. Крім того, поле <операція> може містити символічне ім'я асемблерної макрокоманди.

Поле <операнда> залежить від поля <операція> і може вказувати групу розділених комами операндів, або може бути виключене взагалі.

Операнди асемблерних команд визначають тип використовуваних даних (біт, байт, 2-байтовое слово), спосіб адресації цих даних і адреси переходів в області пам'яті програм мікроконтролера. Розрізняють наступні способи адресації даних: реєстровий, прямий, реєстровий-регістровий, непрямо-реєстровий і безпосередній.

Реєстрова адресація забезпечує звертання по байтовому вмісту регістрів A, B чи регістрів R0-R7 обраного банку, по 2-байтовому вмісту регістра DPTR і до бітового вмісту прапора переносу C, при цьому в якості операндів використовуються прийняті імена перерахованих програмно доступних елементів, а також символічні імена (тільки для регістрів R0-R7), обумовлені користувачем.

Пряма адресація застосовується для звертання по байтовому вмісту 128-ми осередків резидентної пам'яті даних чи 21-го регістра спеціальних функцій, а також до бітового вмісту 16-ти осередків РПД чи 11-ти РСФ, що допускають побітове звертання (мал.2). При прямій адресації даних у поле <операнди> вказуються прямі адреса використовуваних осередків РПД, регістра спеціальних функцій біта. Ця адреса може бути задана числом, символічним ім'ям, вираженням, ім'ям (тільки для РСФ і бітів РСФ). Імена регістрів спеціальних функцій приведені в табл.2.1, а імена бітів РСФ - у табл.2.3, табл.2.5-2.8. Крім того, ім'я біта РСФ може бути представлено структурним видом: (ім'я РСФ).(номер біта). Наприклад, ім'я п'ятого біта регістра TCON можна записати як TCON.5, ім'я другого біта акумулятора - як A.2 і т.д.

За допомогою регістрової-непрямо-реєстрової адресації забезпечується звертання по байтовому вмісту 128-ми комірках РПД, при цьому адреса використовуваної комірки визначається вмістом покажчика стека SP чи одного з регістрів R0, R1 обраного банку. Регістрова непрямо-реєстрова адресація використовується також для звертання до зовнішньої пам'яті даних. У цьому випадку регістром-покажчиком може бути 16-розрядний покажчик даних DPTR чи один зі згаданих вище регістрів R0, R1. Для роботи з даними, "зашитими" у виді констант у пам'ять програм мікроконтролера, застосовується регістрова непрямо-реєстрова адресація по сумі: базовий регістр (вміст DPTR чи програмного лічильника PC) плюс індексний регістр (вміст акумулятора A). Будь-яка така константа може бути обрана за адресою, що обчислюється додаванням умісту DPTR (PC) із умістом A. Операнд, що визначає регістрову-непрямо-реєстрову адресацію даних, задається ім'ям покажчика або символічним ім'ям (тільки для R0 і R1) з обов'язковим префіксом @.

При безпосередній адресації дані, призначені для обробки, безпосередньо вказуються в поле (операнди(і можуть бути представлені в ньому числом, символічним ім'ям або вираженням з обов'язковим префіксом #.

Аналогічним образом (за винятком префікса #) представляється операнд, що визначає адреса переходу в пам'яті програм мікроконтролера.

У якості операндів асемблерних директив і макрокоманд звичайно використовуються числа, символічні імена, вираження, імена програмно доступних елементів мікроконтролера (тільки для директиви REG і макрокоманд), а в ряді випадків мнемоніки мови АСМ51 (тільки для макрокоманд).

Символічні імена, що є операндами команд або директив, повинні бути обов'язково визначені за допомогою відповідних директив (EQU, VAR чи REG) мови АСМ51. Крім того, символічне ім'я адреси в пам'яті програм може бути визначено використанням цього імені в поле (мітка) однієї з рядків вихідного тексту МК-програми. Відзначимо, що коректне символічне ім'я повинне бути представлене комбінацією букв і цифр латинського алфавіту і починатися з букви, при цьому зазначена комбінація допускає використання символу підкреслення.

Застосовувані в якості операндів числа приводяться з вказівкою системи числення (СЧ), для чого використовується суфікс (латинська буква, що стоїть після числа): B - для двійкової СЧ, Q - для вісімкової СЧ, D - і H - відповідно для десяткової і шістнадцяткової СЧ. Число без суфікса вважається десятковим.

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

"+" - додавання (третій рівень пріоритету);

"-" - віднімання (третій рівень пріоритету);

"(" - множення (четвертий рівень пріоритету);

"/" - ділення (четвертий рівень пріоритету);

"((" - зведення в ступінь (п'ятий рівень пріоритету);

.OR. - ЧИ (перший рівень пріоритету);

.AND. - І (другий рівень пріоритету);

.XOR. - що виключає ЧИ (перший рівень пріоритету);

.NOT. - заперечення (шостий рівень пріоритету);

"<" (">") - виділення молодшого (старшого) байта 2-байтного слова (шостий рівень пріоритету).

Оператор з більш високим рівнем пріоритету виконується в першу чергу. Якщо у вираженні присутні оператори з однаковим рівнем пріоритету, то обчислення виробляються ліворуч праворуч. Щоб змінити зазначений порядок виконання розрахунків допускається використовувати дужки. Як приклад приведемо вираження <.NOT.13H+1, що реалізує процедуру перетворення числа 13H у додатковий код і еквівалентне числу 0EDH, що буде отримано при трансляції вихідної МК-програми.

Поле <мітка> не є обов'язковим, відокремлюється від поля <команда/директива> пробілом і може містити символічне ім'я безпосередніх даних, одного з регістрів R0-R7, прямої адреси, чи макророзширення адреси переходу в пам'яті програм. Якщо мітка закінчується двокрапкою, то вона може бути розташована в будь-якім місці рядка, у противному випадку мітка повинна починатися на початку рядка.

Поле <коментар> містить пояснення різного характеру - може пояснювати застосування тієї чи іншої команди директиви, містити опис алгоритму чи ділянки МК-програм в цілому й ін. Це поле не є обов'язковим і при використанні повинне починатися символом;.

 


1 | 2 | 3 | 4 | 5 | 6 | 7 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)