Материал: kniga_mikroprotsessory

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Лабораторная работа №5

Тема: Управление трансляцией программ МК-51

Цель работы: изучение принципов управления трансляцией программ при помощи директив языка АСМ51.

Указания по выполнению работы

1.Изучение директив языка АСМ51

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

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

ASCII операнды

Директива последовательно размещает в ячейках памяти программ (ПП) коды

ASCII символов строки, указанной в поле операнды и заканчивающейся возвратом каретки.

DB операнды

Директива последовательно размещает в ячейках памяти программ (ПП)

байтовые константы, перечисленные через запятую в поле операнды .

Если указанное поле отсутствует, то используется одна ячейка ПП, в

которую заносится "0".

Пример

;MT1 соответствует адресу

;20FH в ПП

MT1 ASCII PEN

;в ПП (20FH)=50H, ;(210H)=45H, (211H)=4EH

Пример

;MT1 соответствует адресу

;1FFH в ПП

MT1 DB 12H,<.NOT.11H+1

DB 10100101B,32

;в ПП (1FFH)=12H, ;(200H)=0EFH,

;(201H)=0A5H, (202H)=20H

102

DS операнды

 

Директива резервирует ячейки памяти

Пример

программ (ПП), причем количество

 

;MT2 соответствует адресу

этих ячеек определяется значением,

;200H в ПП

указанным в поле операнды .

MT2 DS 12H ;(PC)=212H

DW операнды

 

Пример

Директива последовательно размещает

 

;MT1=20FH

в ячейках памяти программ (ПП) 2-

MT1 DW 3212H

байтовые константы, перечисленные

DW

через запятую в поле операнды .

;в ПП (20FH)=32H,

Если указанное поле отсутствует, то

;(210H)=12H,

используются две ячейки ПП, в

;(211H)=(212H)=00H

которые заносится "0".

 

END

 

 

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

ENDM

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

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

Пример

Директива

присваивает

 

SS EQU 25H

символическому имени, размещенному

ZZ EQU SS+2

в поле метка , байтовое или 2-

PP EQU ZZ-1

байтовое значение,

указанное в поле

MOV A,#PP ;(A)=26H

операнды . Это имя не может быть

 

переопределено.

 

 

 

 

 

EXTERN операнды

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

программе (МК-программах).

103

INCLUDE операнды

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

LIST

Директива разрешает вывод листинга следующего за ней текста МК-

программы. По умолчанию выполняется директива NLIST.

LONG операнды

Пример

Директива последовательно размещает в

 

;MT1 соответствует адресу

ячейках памяти программ (ПП) 4-байтовые

;4EEH в ПП

константы, перечисленные через запятую в

MT1 LONG 11223344H

поле операнды . Если указанное поле

;в ПП (4EEH)=11H,

отсутствует, то используются четыре ячейки

;(4EFH)=22H, (4F0H)=33H,

ПП, в которые заносится "0".

;(4F1H)=44H

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

 

 

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

Макрокоманда может использоваться в МК-программе произвольное число раз и при трансляции заменяется на тело своего макроопределения, причем фактические параметры, перечисленные через запятую в поле операнды макрокоманды подставляются вместо соответствующих формальных параметров макроопределения.

104

До трансляции

 

 

После трансляции

 

 

 

 

TC MACRO x,y,z

1

 

TC MACRO x,y,z

MOV A,#z

2

 

MOV A,#z

x A,#y

3

 

x A,#y

ENDM

4

 

ENDM

MOV R0,#25

5

0000

7819

MOV R0,#25

TC ORL,15H,10

6

0002

TC ORL,15H,10

MOVX @R0,A

7

0002

740A

MOV A,#10

END

8

0004

4415

ORL A,#15H

 

9

0006

ENDM

 

10 0006 F2

MOVX @R0,A

 

11 0007

 

END

 

 

 

 

 

NLIST

 

 

 

 

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

программы, если ранее выполнялась директива LIST.

ORG операнды

Пример

Директива устанавливает значение ;(PC)=1234H

программного счетчика PC, причем ORG 12H

указанное значение определяется ;(PC)=0012H

содержимым поля операнды . При отсутствии директивы исходное значение PC принимается равным нулю.

PUBLIC операнды

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

105

метка VAR операнды
Директива присваивает символическому имени, размещенному в поле метка , байтовое или 2-
байтовое значение, указанное в поле
операнды . Это имя может быть переопределено.

метка 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).

Пример

SS VAR 25H

MOV A,#SS ;(A)=25H

SS VAR 13H

MOV A,#SS ;(A)=13H

106

Источник: https://studfile.net/preview/15934500/