M4=1 {Установить указатель на инкремент 1}
CNTR=%2 {Установить длину буфера}
DO trans UNTIL СЕ; {Перенос данных}
si=%3(I4, M4) {Перенос данных из типа %3 памяти}
trans: %4(I5, M4)=si; {В тип %4 памяти}
.ENDMACRO
Пример вызова этого макроса в программе может быть таким:
mem_trans (^tabl_coef, ^buf, %buf, PM, DM);
Здесь в качестве аргументов в макрос передаются адреса буферов tabl_coef и but, длина буфера but и тип памяти. Заметьте, что зарезервированные ключевые слова PM и DM переданы как аргументы.
Несколько следующих директив определяют формат файла листинга. Файл листинга с расширением lst позволяет представить результаты процесса ассемблирования. Ниже показан пример файла листинга простейшей программы. В этом файле используются следующие информационные поля:
addr — смещение от базового адреса модуля;
inst — код операции;
source line — номер строки исходного файла и код.
Release 5.11 Assembler Version 1.34s 9/19/95
D:\TEMA\IKS\PROG\TEST.DSP\DOS.dsp Mon Jun 21 17:07:36 2004 Page 1
addr inst source line
1 .module/RAM/ABS=0 example;
2 .PAGEWIDTH 70;
3 {Описание переменных}
4 .var/dm flag;
5
6 {Инициализация переменных}
7 .init flag: 0x000f;
8
9 again:
0000 02010F 10 toggle FL1; /* Инвертировать флаг */
0001 18000Fu 11 jump again; /* Зациклить */
12 .endmod;
Каждая строка в листинге этой программы имеет свой номер. При обнаружении ошибки в какой-либо строке программы компилятор выдает именно этот номер строки. Символ «u» в поле inst показывает, что код операции содержит адрес перехода.
Существует пять директив ассемблера для формирования выходного файла листинга.