Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
- Федеральное государственное автономное образовательное учреждение высшего образования
- "САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
- АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ"
- КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ
- И ПРОГРАММНОЙ ИНЖЕНЕРИИ (КАФЕДРА №43)
- ОТЧЕТ
- ЗАЩИЩЕН С ОЦЕНКОЙ
- ПРЕПОДАВАТЕЛЬ:
- доцент, к.т.н. А.В. Яковлев
- должность, уч. степень, звание подпись, дата инициалы, фамилия
- ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №7
- «ПРИНЦИПЫ ОРГАНИЗАЦИИ ПАРАЛЛЕЛЬНОГО ВЫПОЛНЕНИЯ КОМАНД»
- ПО ДИСЦИПЛИНЕ «АРХИТЕКТУРА ЭВМ И СИСТЕМ»
- РАБОТУ ВЫПОЛНИЛ
- СТУДЕНТ ГР. 4531 А.А.Ушаковский
- подпись, дата инициалы, фамилия
- 1. Цель работы
- Освоение принципов построения приложений на языке ассемблера для системы Texas Instruments, ознакомление с командами и правилами построения программ в соответствии с особенностями параллельного выполнения команд.
- 2. Текст задания
- Разработать программу, вычисляющую сумму элементов массива между двумя заданными. Границы задаются по индексам. Программа должна быть выполнена с применением параллельного выполнения команд.
- 3. Схемы алгоритмов
- На рисунке представлена схема алгоритма программы с применением параллельного выполнения команд.
- 4. Пример результатов работы программы
- Рассмотрим работу программы на примере следующих тестовых данных:
- таблица 4.1 Тестовые данные
- Массив Левая граница Правая граница Результат
- 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 0 15 105
- Результат работы программы с применением параллельного выполнения команд на рис. 1.1.
- Рис. 1.1 Результат работы программы с применением параллельного выполнения команд
- 5. Выводы по работе
- В результате выполнения лабораторной работы было ознакомление с командами и правилами построения программ в соответствии с особенностями параллельного выполнения команд.
- Разработать программу, вычисляющую сумму элементов массива между двумя заданными. Границы задаются по индексам. Программа должна быть выполнена с применением параллельного выполнения команд.
- Текст программы с применением параллельного выполнения команд
- .ref _c_int00 ;точка входа
- _c_int00:
- .data ;секция данных
- array: .int 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
- i .set 0 ; левая граница
- e .set 15 ; правая граница сумма = 105
- .text ;секция кода
- ;Инициализация:
- MVKL .S1 array, A4 ; A4 - указатель на очередное четное слагаемое
- MVKH .S1 array, A4
- MVK .S1 i, A1 ; A1 - левая граница
- SUB .S1 e, A1, A2 ; A2 - число оставшихся слагаемых
- ||MPY .M1 A1, 4, A1 ; вычисление смещения в адресе относительно начала массива
- SUB .S1 A2, 3, A2 ; A2 -= 1; A2 -= 2;
- ADD .S1 A1, A4, A4 ; установка A4 на элемент, предшествующий первому слагаемому
- MV .L2X A4, B4 ; B4 - указатель на очередное нечетное слагаемое
- ||MVK .S1 0, A0 ; A0 - сумма четных слагаемых
- ||MVK .S2 0, B0 ; B0 - сумма нечетных слагаемых
- ; подготовка данных для первых 5 итераций
- LDW .D1 *++A4, A3 ;чтение из памяти
- ||LDW .D2 *++B4[2], B3
- ||[A2] B .S2 LOOP
- ||[A2] SUB .S1 A2, 2, A2
- LDW .D1 *++A4[2], A3
- ||LDW .D2 *++B4[2], B3
- ||[A2] B .S2 LOOP
- ||[A2] SUB .S1 A2, 2, A2
- LDW .D1 *++A4[2], A3
- ||LDW .D2 *++B4[2], B3
- ||[A2] B .S2 LOOP
- ||[A2] SUB .S1 A2, 2, A2
- LDW .D1 *++A4[2], A3
- ||LDW .D2 *++B4[2], B3
- ||[A2] B .S2 LOOP
- ||[A2] SUB .S1 A2, 2, A2
- LDW .D1 *++A4[2], A3
- ||LDW .D2 *++B4[2], B3
- ||[A2] B .S2 LOOP
- ||[A2] SUB .S1 A2, 2, A2
- LOOP:
- [A2] B .S2 LOOP
- ||ADD .S1 A3, A0, A0
- ||ADD .L2 B3, B0, B0
- ||LDW .D1 *++A4[2], A3
- ||LDW .D2 *++B4[2], B3
- ||[A2] SUB .L1 A2, 2, A2
- ADD .S1X A0, B0, A0 ; сумма четных и нечетных слагаемых
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement