Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМСС_лабораторные.doc
Скачиваний:
80
Добавлен:
07.06.2015
Размер:
4.19 Mб
Скачать
          1. Программа работы и последовательность выполнения

  1. Создайте новый проект. Процессор – dsPIC33FJ256GP710.

  2. Подключите необходимые библиотеки и перепишите программу, приведенную выше. Разберитесь в ее работе.

  3. Необходимо подключить отладчик (симулятор), встроенный в среду MPLABIDE. Выберете в меню <Debugger\SelectTool\MPLABSIM>.

  4. Напишите программу, выполняющую заданную арифметическую функцию, с использованием минимального количества регистров.

№ Варианта

Арифметическая функция

1

e = ( a + 1 ) * ( b – 100 ) / (c + 1000)* (d – 1000)

2

e = ( a + b ) * ( c – b ) / (c + d)

3

e = ( a - b ) * ( c / d) + 123456

4

e = ( 100 - a ) / ( 100 - b ) * (c + d) – 4321

5

e = ( a + b - c ) * d / ( b – a ) + 9876

6

e = ( a * b + c ) * ( b – 100 ) / d

7

e = a * ( b - c ) / ( c – d ) + 12345

8

e = a* b + b / c – c * d – 13579

9

e = ( a * b + 100 ) / ( c + d – 100 )

10

e = ( a + 1000 ) * c + ( b – 1000 ) / d

11

e = ( a - d ) * ( b – c ) / d + 2468

12

e = a *d * ( b + 1000 ) / c – 1357

13

e = a / b + c / d – 1000 * a – 5431 * b

14

e = ( a + c - d ) * ( a - c + d ) / b

15

e = ( a + c * d ) * ( a – c* d ) / b

  1. Открыть окно Watchи внести в него все регистры, которые используются в коде. В пошаговом режиме отладить код, контролируя изменение регистров в окнеWatch. После отладки программы, показать код и результаты работы программы преподавателю.

  2. Создать блок схему программы.

          1. Контрольные вопросы

  1. Для чего нужен стек?

  2. Назовите основные инструкции работы со стеком?

  3. Назовите количество тактов, за которые выполняются операции работы со стеком.

  1. Лабораторная работа №6. Расчет рекуррентной зависимости

          1. Цель работы

Приобрести практические навыки работы с арифметическими командами, командами передачи управления.

          1. Содержание работы

    1. 6.1 Понятие рекуррентной зависимости.

Основным назначением цифровых процессоров является выполнение задач по обработке информации, в частности реализация цифровой фильтрации сигнала. Цифровые фильтры реализуются и выполняются в микропроцессоре по разностному уравнению. В данной работе предложены различные рекуррентные зависимости, которые являются разновидностью разностных уравнений. Основными инструкциями, которыми нужно будет пользоваться, являются: циклы, операции перемещения, арифметические инструк­ции. Они были рассмотрены в предыдущих лабораторных работах.

    1. 6.2 Расчет зависимости.

Рассмотрим пример программы вычисляющий следующую рекуррентную зависимость:

a(k) = a(k-1) + 2*a(k-2) + a(k-3), k = 1, 2, 3, …

Здесь a(k)значение последовательности наk шаге,a(k-1) - на предыдущем шаге выполнения программы и т.д.

Код программы: .include "p33FJ256GP710.inc"

; Определим адреса последовательности a[k]

; a[k] - 0x800

; a[k-1] - 0x802

; a[k-2] - 0x804

; a[k-3] - 0x806

.equ a_begin, 0x800

.equ a_end, 0x806

.text

.global __reset

__reset:

; Определим назначение рабочих регистры

; W2 = a(k)

; W3 = a(k-1)

; W4 = a(k-2)

; W5 = a(k-3)

; W6 - указатель на массив a[k]

mov #a_begin, W6

; Инициализация последовательности

mov #0, W0

mov W0, [W6++] ; a[k] = 0

mov #7, W0

mov W0, [W6++] ; a[k-1] = 7

mov #3, W0

mov W0, [W6++] ; a[k-2] = 3

mov #1, W0

mov W0, [W6++] ; a[k-3] = 1

; Определяем количество итераций работы алгоритма

do #15, lab_B

; Чтения из памяти

mov #a_begin, W6

mov [++W6], W3

mov [++W6], W4

mov [++W6], W5

; Вычисление рекуррентной зависимости

mul.su W4, #2, W0

add W3, W0, W1

add W1, W5, W2

; Запись нового значения в память

mov W2, a_begin

; Сдвиг информации в памяти

mov #a_end, W6

do #2, lab_A

mov [--W6], [++W6]

dec2 W6, W6

lab_A: nop

lab_B: nop

.end