Директивы Ассемблера процессора 8080

Директива .org

[<имя>:] org <адрес> [;комментарий]

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

Пример 1.11:

begin:. org 100h;Начало программы

MVI A,34h

MOV B,A

mm1:. org 300h;Продолжение программы

LXI B,400h

.....

Директива. org 100h указывает, что байты команды нужно расположить в памяти с адреса 100h (h-шестнадцатеричная форма представления числа), а команда LXI B,400h разместится по адресу 300h. После трансляции этот фрагмент программы будет выглядеть следующим образом:

Адрес Число Метка Мнемокод Комментарий

0100 begin:. org 100h;Начало программы

0100 3E 34 MVI A,34h

0102 47 MOV B,A

…………………………………………

0300 mml:. org 300h;Продолжение программы

0300 01 00 04 LXI B,400h

…………………………………………

Директивы. db и. dw

[<имя>:]. db <число,число,..> [;комментарий]

Эта директива определяет значения ячеек памяти размером в байт. Значения определяются числами, записанными после директивы. db (define byte).

Пример 1.12:

Prog:.org 100h;Начало программы

LDA Param1;

MOV D,A;

LDA Param2+1;

ADD D;

STA Param1+2;

…………………………

Data:.org 500h;Область данных

Param1:. db 10h, 0h, 36h, 0A

Param2:. db 32h, 64h

Листинг трансляции выглядит так:

Адрес Число Метка Мнемокод Комментарий

0100 begin:.org 100h;Начало программы

0100 3A 00 05 LDA Param1;

0103 57 MOV D,A;

0104 3A 05 05 LDA Param2+1;

0107 82 ADD D;

0108 32 02 05 STA Param1+2;

…………………………………………………

0500 Data:.org 500h;Область данных

0500 10 00 36 Param1:. db 10h, 0h, 36h, 0A

0A

0504 32, 64 Param2:. db 32h, 64h

Можно определять ячейки размером в слово (два байта). Для этого служит директива. dw (define word). Если в предыдущем примере db заменить на dw, то часть листинга с областью данных может выглядеть следующим образом

Пример 1.13:

0500 Data:.org 500h;Область данных

0500 0010 Param1:. dw 0010h, 0A36 h

0A36

0504 6432 Param2:. dw 6432h

Директива. equ

[<имя>:]. equ <число> [;комментарий]

Язык Ассемблера позволяет вместо адресов ячеек памяти оперировать с их символическими именами. Это является его преимуществом по сравнению с программированием в машинных кодах. Директива. equ присваивает имени в поле метки конкретное значение числа в поле операндов.

Пример 1.14:

Adr_Tbl. equ 500h;Определение адреса начала таблицы данных

Adress. equ 400h;Определение адреса байта данных

Prog:.org 100h;Начало программы

LXI B,Adr_Tbl;

LXI H,Adress;

LDAX B;

ADI 05;

MOV M,A;

……………………………;

.org 400h;Начало таблицы Adr_Tbl

.db 00, 01, 04, 09;

.org 500h;Место байта данных Adress

.db 0

Директива. end

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


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



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