Освоение специфических средств программирования циклов, косвенной адресации массивов, отображения портов на память и приёмов управления при отладке программы для процессора ADSP-21xx (контрольные точки, связывание порта с файлом данных).
2.1. Изучить следующие вопросы:
Директивы ассемблера.
Использование генераторов адресов данных DAG.
Цели и особенности применения многофункциональных инструкций.
Особенности программирования и работы цикла в ADSP-21xx.
Приёмы управления VisualDSP++ при отладке программы.
Материалы для освоения указаны в разделе 3.
Контрольные вопросы см. в разделе 7.
2.2. Домашнее задание:
Внести коррективы в программу vectadd.asm – изменить размерность вектора результата и заменить операцию сложения целых чисел x + y на другую, согласно таблице 3.1.
Таблица 3.1 – Варианты для бригад
№ бригады |
1 |
2 |
3 |
4 |
5 |
6 |
Размерность |
7 |
8 |
5 |
6 |
7 |
8 |
Операция |
x - y |
y - x |
x * y |
x - y |
y - x |
x * y |
Проанализировать программу, составить схему алгоритма и подготовить ожидаемые результаты выполнения программы. Шестнадцатеричные значения векторов x и y, содержащиеся в файлах xin.dat и yin.dat, приведены в таблице 3.2.
Таблица 3.2 – Исходные данные
x |
0001 |
0003 |
0005 |
0007 |
0009 |
000B |
000D |
000F |
0011 |
0013 |
y |
000B |
000C |
000D |
000E |
000F |
0010 |
0011 |
0012 |
0013 |
0014 |
3.1. Система команд ADSP-2101 (Справочные материалы по ADSP-21xx, стр.1)
3.2. Используемая программа vectadd.asm (см. Приложение, программа к ЛР № 2, 3).
3.3. Учебное пособие “Работа с VisualDSP++”, разделы 10, 11, 12, 13.3.
3.4. Материал лекций по указанным вопросам.
4.1. Скорректировать исходный файл .asm согласно заданию. Создать исполняемый файл .dxe и загрузить его.
4.2. Проверить работу циклической программы с использованием контрольной точки. Результаты сопоставить с ожидаемыми.
4.3. Рассмотреть выводимые программой результаты в области отображения порта на память, связать эту ячейку с файлом данных, выполнить программу в режиме прогона и вывести файл на экран.
5.1. В этой работе используется проект VectAdd, полученный в работе №2. Открыть этот проект командой Project/Open, открыть для редактирования свой ранее отлаженный файл vectadd.asm и cкорректировать его в соответствии с заданием для бригады.
5.2. Сформировать файл vectadd.dxe командойBuild, загрузить программу командой Load .
5.3. Выполняя программу по шагам (команда Step Into), зафиксировать результаты каждой операции от начала программы до конца первого прохода по циклу в таблице 3.1 (аналогично работе № 2).
5.4. Установить контрольную точку в последней инструкции цикла и провести дальнейшую проверку работы цикла с использованием прогонов до контрольной точки (указания в разделе 11). Обратите внимание, что стрелка указывает на ещё невыполненную инструкцию. После выхода из цикла остальные инструкции программы нужно проверить в пошаговом режиме. Для обнаружения момента выхода из цикла удобно воспользоваться контрольной точкой, расположенной в первой инструкции после цикла. Получаемые результаты отобразить в таблице 3.3.
Таблица 3.3 – Схема оформления протокола экспериментальной проверки программы с циклом
16-ричный адрес выполненной инструкции |
Контролируемый регистр или ячейка памяти |
Результат выполнения инструкции |
||||
первый проход |
последующие проходы цикла |
последний проход |
||||
Начальный адрес |
||||||
Адр.точки контроля |
||||||
Адрес конца цикла |
||||||
Конечный адрес |
Таблица содержит адреса всех инструкций программы, начиная с метки start, и по каждому адресу контролируемый объект(ы) – имя(имена) регистра или ячейки памяти с номером, в который происходит запись по инструкции, находящейся по этому адресу. Заштрихованы недоступные области таблицы. Обратить внимание, что задано было получить n результатов, а число проходов по циклу было уменьшено на единицу.
Сопоставить полученные результаты с ожидавшимися.
5.5. Ячейка z_out имитирует параллельный порт. В неё выводится результат расчёта в конце каждого прохода по циклу. Чтобы увидеть все получаемые результаты вместе, нужно подключить к ячейке z_out файл с именем out.dat (указания в разделе 13.3). Вернуть программу в исходное состояние командой Restart. Убрать контрольные точки и выполнить программу в режиме прогона (команда Run) от начала до конца. Остановить работу имитатора комадой Halt. Открыть полученный файл out.dat средствами, имеющимися в программе VisualDSP++ (команда File/Open) и в Windows, и продемонстрировать его преподавателю. Зафиксировать результаты в отчёте.
5.6. После завершения работы закрыть проект VectAdd командой Project/Close и закрыть программу VisualDSP++. Папку VectAdd из своей рабочей области удалить.
6.1. Цель работы.
6.2. Выполнявшаяся программа на языке ассемблера.
6.3. Результаты проверки работы программы в виде табл. 3.3.
7.1. Расскажите об инструкциях, обеспечивающих работу с массивами данных.
7.2. Что такое косвенная адресация и чем она обеспечена в программе?
7.3. Расскажите о целях и предпочтительных местах использования многофункциональных инструкций.
7.4. Опишите особенности программирования и работы цикла DO в ЦСП.
7.5. Зачем число проходов по циклу CNTR уменьшено на единицу?
7.6. Опишите последовательность операций по проверке и отладке программы с циклом в VisualDSP++.
7.7. Как выбрать положение контрольной точки при отладке программы с циклом?
7.8. Какие преимущества даёт использование контрольных точек при отладке программы?
7.9. Особенности вывода и отображения на экране результатов работы программы, использованные в этой работе.
7.10. Где и как можно получить результаты работы программы целиком?
7.11. Почему понадобились моделирование ввода/вывода и связывание порта с файлом данных?
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.