Вход на сайт Навигация по сайту Любить и уважать Бонус-счастливчики
|
Содержимое файла "Лаба 4-5.doc" (без форматирования) Лаба №4 В РПД, починаючи з адреси 10H, записаний масив з 10 двобайтних чисел Х, а РПП з адреси 020H- масив з 10 двобайтних чисел Y. Обчислити масив Z, кожний з елементів якого визначається по формулі Zi=Xi*Bi. Масив Z розташувати в РПД, починаючи з адреси 020H. Текст программы на базе ADSP-2181 .module/RAM VVV; .var/DM/abs=0x0010 x[10]; .var/PM/abs=0x0020 y[10]; .var/DM/abs=0x0020 z[10]; .init x: 34,54,23,57,35,56,76,17,34,56; .init y: 23,57,35,56,76,17,34,56,76,91; .entry start; start: I0=^x; L0=0; M0=1; // X I4=^y; L4=0; M4=1; // Y I1=^z; L1=0; M1=1; // Z CNTR=10-1; MX0=DM(I0,M0), MY0=PM(I4,M4); DO loop1 UNTIL CE; MR=MX0 * MY0 (UU), MX0=DM(I0,M0), MY0=PM(I4,M4); loop1: DM(I1,M1)=MR0; MR=MX0 * MY0 (UU); DM(I1,M1)=MR0; IDLE; .ENDMOD; Лаба №5 (Visual DSP) В РПД, починаючи з адреси 10H, записаний масив з 10 двобайтних чисел Х, а РПП з адреси 020H- масив з 10 двобайтних чисел Y. Обчислити масив Z, кожний з елементів якого визначається по формулі Zi=Xi*Bi. Масив Z розташувати в РПД, починаючи з адреси 020H. Текст программы на базе ADSP-2181 #define n 10 #define x_adr 0x20 #define y_adr 0x30 #define z_adr 0x30 .section/data data1; .VAR x[n] = 10,9,8,7,6,5,4,3,2,1; .VAR z[n]; .section/pm pm_da; .VAR y[n] = 1,2,3,4,5,6,7,8,9,10; .section/pm interrupts; /*------Interrupt vector table------*/ __reset: JUMP start; nop; nop; nop; /* 0x0000: Reset vector*/ RTI; nop; nop; nop; /* 0x0004: IRQ2*/ RTI; nop; nop; nop; /* 0x0008: IRQL1*/ RTI; nop; nop; nop; /* 0x000C: IRQL0*/ RTI; nop; nop; nop; /* 0x0010: SPORT0 transmit*/ RTI; nop; nop; nop; /* 0x0014: SPORT0 receive*/ RTI; nop; nop; nop; /* 0x0018: IRQE*/ RTI; nop; nop; nop; /* 0x001C: BDMA*/ RTI; nop; nop; nop; /* 0x0020: SPORT1 transmit*/ RTI; nop; nop; nop; /* 0x0024: SPORT1 receive*/ RTI; nop; nop; nop; /* 0x0028: Timer*/ RTI; nop; nop; nop; /* 0x002C: Power down*/ .section/pm program; start: I0=x; L0=0; M0=1; // X I4=y; L4=0; M4=1; // Y I1=z; L1=0; M1=1; // Z CNTR=n-1; MX0=DM(I0,M0), MY0=PM(I4,M4); DO loop1 UNTIL CE; MR=MX0 * MY0 (UU), MX0=DM(I0,M0), MY0=PM(I4,M4); loop1: DM(I1,M1)=MR0; MR=MX0 * MY0 (UU); DM(I1,M1)=MR0; IDLE; В пам’яті даних з адреси 0100H, розміщений масив з 20 однобайтних цілих чисел зі знаком (старший розряд). Визначити скільки позитивних, негативних і нульових чисел у цьому масиві. Результати помістити в пам’яті даних за адресами 0200H,0201H,0202H відповідно. .section/pm interrupts; /*------Interrupt vector table------*/ __reset: JUMP start; nop; nop; nop; /* 0x0000: Reset vector*/ RTI; nop; nop; nop; /* 0x0004: IRQ2*/ RTI; nop; nop; nop; /* 0x0008: IRQL1*/ RTI; nop; nop; nop; /* 0x000C: IRQL0*/ RTI; nop; nop; nop; /* 0x0010: SPORT0 transmit*/ RTI; nop; nop; nop; /* 0x0014: SPORT0 receive*/ RTI; nop; nop; nop; /* 0x0018: IRQE*/ RTI; nop; nop; nop; /* 0x001C: BDMA*/ RTI; nop; nop; nop; /* 0x0020: SPORT1 transmit*/ RTI; nop; nop; nop; /* 0x0024: SPORT1 receive*/ RTI; nop; nop; nop; /* 0x0028: Timer*/ RTI; nop; nop; nop; /* 0x002C: Power down*/ .section/pm program; start: I0=0x0100; L0=20; M0=1; CNTR=20; ax0=0; DM(0x0200)=AX0; DM(0x0201)=AX0; DM(0x0202)=AX0; do end until ce; ar=dm(i0,m0); ar=pass ar; if gt jump p_buf; if eq jump z_buf; if lt jump n_buf; p_buf: ar=dm(0x0200); ar=ar+1; dm(0x0200)=ar; jump end; z_buf: ar=dm(0x0201); ar=ar+1; dm(0x0201)=ar; jump end; n_buf: ar=dm(0x0202); ar=ar+1; dm(0x0202)=ar; jump end; end: .module/ram dj; .ENTRY START; START: AX0 = DM(200); AY0 = DM(201); AR = AX0 - AY0; IF LE JUMP A_MUL; AX0 = DM(201); AY0 = DM(202); AR = AX0 - AY0; IF LE JUMP A_MUL; AX0 = DM(200); AY0 = DM(201); AR = AX0 AND AY0; DM(203) = AR; JUMP END; A_MUL: MX0 = DM(200); MY0 = DM(201); MR0 = MX0 * MY0; DM(203) = MR0; DM(204) = MR1; JUMP END; END: NOP; .ENDMOD; |
Посетителей: 0, из них зарегестрированных: 0, гостей: 0 Зарегистрированные пользователи: Подробно | Страница сгенерирована за 0.0616 сек. |