Смотря что вы понимаете под модулем. Ключевое слово .section служит для размещения кода в определенном участке памяти. Память расшивается в файле *.ldf, вот кусок из моего примера
Код
MEMORY
{
seg_inttab { TYPE(PM RAM) START(0x00000) END(0x0002f) WIDTH(24) }
seg_code { TYPE(PM RAM) START(0x00030) END(0x02fff) WIDTH(24) }
seg_pmda { TYPE(PM RAM) START(0x03000) END(0x03fff) WIDTH(24) }
seg_data1 { TYPE(DM RAM) START(0x00000) END(0x00fff) WIDTH(16) }
seg_data2 { TYPE(DM RAM) START(0x01000) END(0x01fff) WIDTH(16) }
// seg_heap { TYPE(DM RAM) START(0x02000) END(0x02fff) WIDTH(16) }
// seg_stack { TYPE(DM RAM) START(0x03000) END(0x03fdf) WIDTH(16) }
}
Ниже в этом же файле этим сегментам сопоставляются символьные имена: interrupts, program, data1, data2, pm_da.
Дальше в программе пишем .section/dm означает что следующий дальше код будет размещен в памяти данных в сегменте data1, в данном случае это переменные.
Код
.section/dm data1;
.var/circ Xn[1]={0x1234}; //Эти отсчеты должны быть отличны от нулЯ при старте
.var/circ Yn[1]={0x1234}; //
.var A=0x1D1B; //коэффициент в формате 4.12 равен 1,81912dec
.var sigma=0x1333; //коэффициент в формате 4.12 равен 1,2dec
Дальше начинается программа. Соответсвенно размещяем ее в памяти программ, в сегменте program
Код
.section/pm program;
CosSinGenerate:
ax1=dm(Xn);
ay1=dm(Yn);
mx0=dm(A);
my0=ay1;
А для чего используется ключевое слово .MODULE честно говоря я даже не помню, в моем примере оно используется в файле sin.dsp. Да и не забудье что не следует использовать букву "я" в коментариях, если уж очень хочется русские коментарии, используйте букву "Я" (большую).
Может быть вам нужна русскоязычная литература по этому процессору? у меня вроде есть чем поделиться, могу поискать.