Курс лекций. - Микропроцессоры


Многомодульные программы


Rambler's Top100
Дата последнего обновления файла 21.01.05

Использование сегментов в языке программирования ассемблер.

Как только встал вопрос о транслировании программы по частям возникает вопрос как с этими частями работать. Справедливости ради необходимо отметить, что даже когда мы не задумываемся о сегментах, в программе присутствует два сегмента: память программ и память данных. Если внимательно присмотреться к программе, то можно обнаружить, что кроме команд в памяти программ хранятся константы, то есть в памяти программ располагаются по крайней мере два сегмента: программа и данные. Чередование программы и данных может привести к нежелательным последствиям. Вследствие каких либо причин случайно данные могут быть выполнены в качестве программы или наоборот программа может быть воспринята и обработана как данные.

Рисунок 1. Разбиение памяти программ и памяти данных на сегменты.

Перечисленные выше причины приводят к тому, что желательно явным образом выделить по крайней мере три сегмента:

  1. программу;
  2. переменные;
  3. константы.

Наиболее простой способ определения сегментов это использование абсолютных сегментов памяти. При этом способе распределение памяти ведётся вручную точно также, как это делалось при использовании директивы EQU. В этом случае начальный адрес сегмента жёстко задаётся программистом и он же следит за тем, чтобы сегменты не перекрывались друг с другом в памяти микроконтроллера. Использование абсолютных сегментов позволяет более гибко работать с памятью данных, так как теперь байтовые переменные в памяти данных могут быть назначены при помощи директивы резервирования памяти DS, а битовые переменные при помощи директивы резервирования битов DBIT.

Для определения абсолютных сегментов памяти используются директивы:

  1. BSEG - абсолютный сегмент в области битовой адресации
  2. CSEG - абсолютный сегмент в области памяти программ
  3. DSEG - абсолютный сегмент в области внутренней памяти данных
  4. ISEG - абсолютный сегмент в области внутренней памяти данных с косвенной адресацией
  5. XSEG - абсолютный сегмент в области внешней памяти данных

Директива BSEG позволяет определить абсолютный сегмент во внутренней памяти данных с битовой адресацией по определённому адресу.


- Начало -  - Назад -  - Вперед -