Добавил:
Студент, если у тебя есть завалявшиеся работы, то не стесняйся, загрузи их на СтудентФайлс! Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ассемблер.docx
Скачиваний:
4
Добавлен:
16.07.2022
Размер:
1.88 Mб
Скачать
  1. Директивы ассемблера

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

Директивы подчиняются стандартному формату предложений ассемблера. Отдельные отличия рассматриваются ниже.

    1. Директива end.

Эта директива – приказ ассемблеру о прекращении ассемблирования вследствие достижения конца физического кода программы.

Формат директивы END

Метка

Код

Операнд

Комментарий

;Формат директивы END

[Метка: ]

END

[;конец компиляции ]

Директива имеет две особенности.

Первое. Директива является обязательной. При ее отсутствии в программе, ассемблер формирует код ошибки или не выходит из процедуры ассемблирования.

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

2.2 Директива org (начало, origin).

Формат директивы ORG

Метка

Код

Операнд

Комментарий

;Формат директивы ORG

[Метка: ]

ORG

<выражение>

[;адрес первого ;байта кода ;программы или ;фрагмента ;программы или следующего

; байта данных]

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

Первое. Она может отсутствовать перед “входом” в программу. В этом случае первый байт программного кода размещается в ячейке с адресом 0000h.

Второе. В программе может встречаться несколько директив ORG определяющих начало следующего фрагмента программного кода или массива данных.

Пример.

Метка

Код

Операнд

Комментарий

; Пример программы с несколькими директивами ORG

ORG

0С00h

; адрес = 0С00h;

LXI

H, 1210h

; адрес первого

; байта КК 0С00h

MOV

D,M

; КК в ячейке 0C03h

* * *

JMP

M1

; обход пропускаемых

; ячеек

ORG

0E00h

; адрес = 0E00h

M1:

MOV

A, D

; адрес команды 0Е00h

* * *

Cостояние пропущенных в примере ячеек памяти не определено, т.е. нельзя считать, например, что они содержат значение 00h.Они резервируются, однако, чтобы избежать ошибок при работе процессора, в программе должен быть предусмотрен их обход, например, с помощью команды JMP addr.

Третье. Директива ORG может быть использована для точного задания числа резервируемых ячеек.

Пример.

Метка

Код

Операнд

Комментарий

; Пример резервирования памяти с помощью директивы

; ORG

ORG

0С00h

; адрес = 0С00h;

LXI

H, 1210h

; адрес первого

; байта КК= 0С00h

JMP

M1

; обход пропускаемых

; ячеек

ORG

$+20h

; резервирование

; 32d ячеек

M1:

MOV

A, D

; адрес команды 0Е26h

* * *

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

Пример.

Метка

Код

Операнд

Комментарий

;Пример резервирования ячеек для данных

* * *

ORG

0АС00h

; адрес = AС00h

ARRAY:

DB

12, 03, FCh

; массив из трех

; чисел 0Сh, 03, FCh

; с адреса AC00h

* * *

Соседние файлы в предмете Основы микропроцессорной техники