Директивы языка АСМ51

Директивы в отличие от команд ассемблерного языка не преобразуются в объектный код и применяются для управления процессом трансляции исходной МК-программы.

Рассмотрим основные директивы языка АСМ51.

ASCII <операнды>

Директива последовательно размещает в ячейках памяти программ (ПП) коды ASCII символов строки, указанной в поле <операнды> и заканчивающейся возвратом каретки. Пример
;MT1 соответствует адресу ;20FH в ПП MT1 ASCII PEN ;в ПП (20FH)=50H, ;(210H)=45H, (211H)=4EH

DB <операнды>

Директива последовательно размещает в ячейках памяти программ (ПП) байтовые константы, перечисленные через запятую в поле <операнды>. Если указанное поле отсутствует, то используется одна ячейка ПП, в которую заносится "0". Пример
;MT1 соответствует адресу ;1FFH в ПП MT1 DB 12H,<.NOT.11H+1 DB 10100101B,32 ;в ПП (1FFH)=12H,;(200H)=0EFH, ;(201H)=0A5H, (202H)=20H

DS <операнды>

Директива резервирует ячейки памяти программ (ПП), причем количество этих ячеек определяется значением, указанным в поле <операнды>. Пример
;MT2 соответствует адресу ;200H в ПП MT2 DS 12H;(PC)=212H

DW <операнды>

Директива последовательно размещает в ячейках памяти программ (ПП) 2-байтовые константы, перечисленные через запятую в поле <операнды>. Если указанное поле отсутствует, то используются две ячейки ПП, в которые заносится "0". Пример
;MT1=20FH MT1 DW 3212H DW ;в ПП (20FH)=32H, ;(210H)=12H, ;(211H)=(212H)=00H

END

Директива определяет конец МК-программы.

ENDM

Директива определяет конец макроопределения.

<метка> EQU <операнды>

Директива присваивает символическому имени, размещенному в поле <метка>, байтовое или 2-байтовое значение, указанное в поле <операнды>. Это имя не может быть переопределено. Пример
SS EQU 25H ZZ EQU SS+2 PP EQU ZZ-1 MOV A,#PP;(A)=26H

EXTERN <операнды>

Директива объявляет символические имена, указанные через запятую в поле <операнды>, как внешние, то есть определяемые в другой (других) МК-программе (МК-программах).

INCLUDE <операнды>

Директива включает в трансляцию файл, имя которого вместе с расширением указаны в поле <операнды>. Включения не могут подвергаться вложению.

LIST

Директива разрешает вывод листинга следующего за ней текста МК-программы. По умолчанию выполняется директива NLIST.

LONG <операнды>

Директива последовательно размещает в ячейках памяти программ (ПП) 4-байтовые константы, перечисленные через запятую в поле <операнды>. Если указанное поле отсутствует, то используются четыре ячейки ПП, в которые заносится "0". Пример
;MT1 соответствует адресу ;4EEH в ПП MT1 LONG 11223344H ;в ПП (4EEH)=11H, ;(4EFH)=22H, (4F0H)=33H, ;(4F1H)=44H

<метка> MACRO <операнды>

Директива начинает макроопределение, которое составляется из операторов языка АСМ51 (строк исходного текста МК-программы) и должно заканчиваться директивой ENDM. Любое поле включенных в макроопределение операторов (кроме поля <комментарий>) может быть представлено формальным параметром, которые перечисляются через запятую в поле <операнды>. В поле <метка> указывается символическое имя макрокоманды, которая будет определяться данным макроопределением. Макрокоманда может использоваться в МК-программе произвольное число раз и при трансляции заменяется на тело своего макроопределения, причем фактические параметры, перечисленные через запятую в поле <операнды> макрокоманды подставляются вместо соответствующих формальных параметров макроопределения.

До трансляции После трансляции
TC MACRO x,y,z MOV A,#z x A,#y ENDM MOV R0,#25 TC ORL,15H,10 MOVX @R0,A END 1 TC MACRO x,y,z 2 MOV A,#z 3 x A,#y 4 ENDM 5 0000 7819 MOV R0,#25 6 0002 TC ORL,15H,10 7 0002 740A MOV A,#10 8 0004 4415 ORL A,#15H 9 0006 ENDM 10 0006 F2 MOVX @R0,A 11 0007 END

NLIST

Директива запрещает вывод листинга следующего за ней текста МК-программы, если ранее выполнялась директива LIST.

ORG <операнды>

Директива устанавливает значение программного счетчика PC, причем указанное значение определяется содержимым поля <операнды>. При отсутствии директивы исходное значение PC принимается равным нулю. Пример
;(PC)=1234H ORG 12H ;(PC)=0012H

PUBLIC <операнды>

Директива объявляет символические имена, указанные через запятую в поле <операнды>, как глобальные (общие), то есть такие, к которым можно осуществлять ссылку из других МК-программ.

<метка> REG <операнды>

Директива присваивает символическому имени, размещенному в поле <метка>, байтовое или битовое значение, указанное в поле <операнды>, причем указанное значение может быть задано не только числом, другим символическим именем или выражением, но и именем программно доступного элемента микроконтроллера. Символическое имя, размещенное в поле <метка>, не может быть переопределено. Пример
X REG R4;X определя- ;ется как регистр R4 Y REG P3;Y определя- ;ется как порт P3 Z REG Y;Z определяет- ;ся как порт P3 B.0 REG C;B.0 определя- ;ется как флаг C B.1 REG X.1;B.1 опреде- ;ляется как первый бит ;регистра R4

RECSIZE <операнды>

Директива используется для управления редактором связей. В частности, от содержимого поля <операнды> этой директивы зависит максимальный размер записей в загрузочном модуле МК-программы (см. подраздел 3.3).

SYMBOLS

Директива используется для управления редактором связей. В частности, разрешает формирование специального файла, содержащего символические имена, в формате MICROTEK или ZAK (см. подраздел 3.3).

<метка> VAR <операнды>

Директива присваивает символическому имени, размещенному в поле <метка>, байтовое или 2-байтовое значение, указанное в поле <операнды>. Это имя может быть переопределено. Пример
SS VAR 25H MOV A,#SS;(A)=25H SS VAR 13H MOV A,#SS;(A)=13H

Список литературы

1. Однокристальные микроЭВМ. М.: МИКАП, 1994.

2. Сташин В.В. и др. Проектирование цифровых устройств на однокристальных микроконтроллерах/ В.В.Сташин, А.В.Урусов, О.Ф.Мологонцева. М.: Энергоатомиздат, 1990.

3. Щелкунов Н.Н., Дианов А.П. Микропроцессорные средства и системы. М.: Радио и связь, 1989.

4. ОСТ 110342.2-87. Язык ассемблера АСМ51. М., 1987.


Глава 3.   ТЕХНОЛОГИЯ РАЗРАБОТКИ ПРИКЛАДНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ МИКРОКОНТРОЛЛЕРОВ MCS-51

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



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