CSEG - Програмний сегмент

Директива CSEG визначає початок програмного сегменту, в якому і розташовується програмний код. Початковий файл може складатися з декількох програмних сегментів, які об'єднуються в один програмний сегмент при компіляції. Програмний сегмент є сегментом за умовчанням. Програмні сегменти мають свої власні лічильники положення, які рахують не побайтно, а по словах. Директива ORG може бути використана для розміщення програмного коду та констант в необхідному місці сегменту. Директива CSEG не має параметрів.

Синтаксис:
.CSEG

Приклад:

.DSEG; початок сегменту даних

vartab: BYTE 4; резервує 4 байти в ОЗП

.CSEG; початок кодового сегменту

const:.DW 2; Розмістити константу 0x0002 в пам'яті програм

mov r1,r0; Виконати дії

DB - Зарезервувати байти у FLASH або EEPROM

Директива DB резервує необхідну кількість байт у FLASH або у EEPROM. Якщо Ви хочете мати можливість посилатися на виділену область пам'яті, то до директиви DB повинна бути передуюча мітка. Після цього до елементу пам'яті можна звертатися за ім'ям мітки. Директива DB повинна мати хоча б один параметр. Дана директива може бути розміщена тільки в сегменті програм (CSEG) або в сегменті EEPROM (ESEG).

Параметри, що передані директиві, - це послідовність виразів, розділених комами. Кожен вираз повинен бути або числом в діапазоні (-128..255), або в результаті обчислення повинен давати результат в цьому ж діапазоні, інакше число усікається до байта, причому БЕЗ ВИДАЧІ ПОПЕРЕДЖЕНЬ.

Якщо директива одержує більш за один параметр і поточним є програмний сегмент, то параметри упаковуються в слова (перший параметр - молодший байт), і якщо число параметрів непарне, то останній вираз буде усічений до байта і записаний як слово із старшим байтом рівним нулю, навіть якщо далі йде ще одна директива DB.

Синтаксис:
мітка:.DB список_выражений

Приклад:

.CSEG

consts:.DB 0, 255, 0b01010101 -128, 0xaa

.ESEG

const2:.DB 1,2,3

DEF - Призначити регістру символічне ім'я

Директива DEF дозволяє привласнити регістру символічне ім'я. Призначене ім'я може використовуватися у всій нижченаведеній частині програми для звернень до даного регістра. Регістр може мати декілька різних імен. Символічне ім'я може бути перепризначене пізніше в програмі.

Синтаксис:

.DEF Символічне_им’я = Регістр

Приклад:

.DEF temp=R16

.DEF ior=R0

.CSEG

ldi temp,0xf0; Завантажити 0xf0 в регістр temp (R16)

in ior,0x3f; Прочитати SREG в регістр ior (R0)

eor temp,ior; Регістри temp та ior складаються за виключаючим АБО


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: