Директива .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
Самая простая директива, не имеет операндов и указывает ассемблирующей программе, что текст программы окончен.