Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Микропроцессорные средства и системы. Методические указания к лабораторным работам №1-3 на стенде НТЦ-02.31.2

.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
537 Кб
Скачать

2. Пример выполнения работы

Задача: Вычислить значение выражения (25 + 13) * (18 – 9), результаты промежуточных вычислений хранить в регистрах. Выделить младшую тетраду результата и поместить её в старшую. Проверить корректность выполнения ал-

горитма и результаты промежуточных вычислений в симуляторе. Указать ре-

зультат выполнения алгоритма.

Листинг программы:

.include "P33FJ32MC204.inc"

.global __reset

 

 

__reset:

 

 

 

mov

#25, W0

; W0 = 25

mov

#13, W1

; W1 = 13

add

W0, W1, W2

; W2 = W0 + W1

mov

#18, W3

; W3 = 18

mov

#9, W4

; W4

= 9

sub

W3, W4, W5

; W5

= W3 - W4

mul.ss

W2, W5, W6

; W6

= W2 * W5

and

#0x000F, W6

 

 

sl

W6, #12, W6

; W6

= W6 << 12

.end

 

 

 

Результат выполнения алгоритма: Регистр W6 содержит значение 0x6000

3. Варианты индивидуальных заданий к лабораторной работе

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

иуказать результат выполнения алгоритма.

3.1.Загрузить в регистр число 15. Сложить его с 25 и результат поместить на вершину стека. Поместить по адресу 20h внутренней памяти данных млад-

шую десятичную цифру результата, а по адресу 21h – старшую.

31

3.2. Найти разницу чисел 4836 и 2454. Младший байт результата поде-

лить на 2. Поместить по адресу 30h внутренней памяти данных младшую деся-

тичную цифру результата, а по адресу 32h – старшую

3.3. Найти адрес ячейки памяти данных путем перемножения двух чисел

0Сh и 0Eh. В этуячейку записать результат логической операции «исключаю-

щее или» между текущим содержимым регистра W0 и числа 09h.

3.4.Найти частное чисел 236 и 59. Результат умножить на 8 используя операции сдвига. По вычисленному таким образом адресу ячейки внутренней памяти данных размесить результат двойного декремента полученного числа.

3.5.Загрузить регистр W7 числом 023h. Найти сумму W7 + 32. В ячейку внутренней памяти данных, расположенную по вычисленному таким образом адресу, загрузить число десятичных единиц результата сложения.

3.6.Вычислить значение выражения (81 + 64) * (112 - 25) OR 10011010b,

сохраняя промежуточные результаты в стеке.

3.7. Найти разницу чисел 4801 и 209. Число десятичных единиц старшего байта результата поместить в старшую тетраду порта RA. Младшую тетраду оставить без изменений.

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

4.1.Из каких блоков состоит программа на ассемблере?

4.2.В чём отличие директив и инструкций?

4.3.Укажите синтаксис директив.

4.4.Укажите синтаксис инструкций.

4.5.Каково назначение литералов?

Библиографический список

1.Datasheet. dsPIC33FJ32MC202/204. Microchip. 2012.

2.16-bit MCU and DSC Programmer's Reference Manual. Microchip. 2012.

3.dsPIC33F Family Reference Manual. Section 2. CPU. Microchip. 2007.

32

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]