- •Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
- •«Вычислительные машины, системы и сети»
- •Оглавление
- •Требования к оформлению отчетов по лабораторным работам
- •Лабораторная работа №1. Изучение программной среды mpladide. Введение в язык ассемблер.
- •Цель работы
- •Содержание работы
- •1.1 Создание нового проекта
- •1.2 Подключение библиотек и упаковочных файлов процессора
- •1.3 Создание файла с исполняемым кодом
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •2.3 Битовые операции
- •2.4 Логические операции
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •3.3 Инструкция вычитания
- •Синтаксис:
- •3.4 Инструкция деления
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •4.2 Инструкции сравнения
- •4.3 Инструкции переходов
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •Лабораторная работа №5. Работа со стеком.
- •Цель работы
- •Содержание работы
- •5.1 Помещение в стек
- •Примеры помещения в стек
- •5.2 Извлечение из стека
- •Примеры извлечения из стека
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •6.2 Расчет зависимости.
- •Данную программу можно записать более компактно:
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •7.2 Инструкции сдвига
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •8.2 Сортировка обменом (метод пузырька)
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •9.2 Поиск с предварительным анализом
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •Контрольные вопросы
- •11.2 Rot13.
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •12.2 Вычисление crc
- •Прямой табличный алгоритм crc16
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •Лабораторная работа №13. Синтез сигналов специальной формы
- •Цель работы
- •Содержание работы
- •Программа работы и последовательность выполнения
- •Контрольные вопросы
- •Список литературы
- •Приложение 1. Ассемблерные инструкции микропроцессора
3.3 Инструкция вычитания
Синтаксис:
{label:} |
SUB |
Wb, |
Ws, |
Wnd |
Wd=Wb-Ws
3.4 Инструкция деления
{label:} |
DIV |
Wm, |
Wn |
W0:W1=Wm/Wn-Wmделится наWn, результат записывается в регистровую паруW0:W1. Причем вW0 помещается целая часть, а вW1 – остаток от деления.
Пример программы, реализующий арифметическую функцию: e= (a+b) *c/d
.include "p33FJ256GP710.inc"
.equ a, 0x800 .equ b, 0x802 .equ c, 0x804 .equ d, 0x806 .equ e, 0x808
.text .global __reset
__reset:
; - Инициализация переменных mov #-3, W0 mov W0, a mov #21, W0 mov W0, b mov #10000, W0 mov W0, c mov #-37, W0 mov W0, d
; - Реализация арифметической функции mov a, W0 mov b, W1 add W0, W1, W2 mov c, W3 mul.ss W2, W3, W0 mov d, W2 repeat #17 div.sd W0, W2 mov W0, e nop .end |
Программа работы и последовательность выполнения
Создайте новый проект. Процессор – dsPIC33FJ256GP710.
Подключите необходимые библиотеки и перепишите программу, приведенную выше. Разберитесь в ее работе.
Необходимо подключить отладчик (симулятор), встроенный в среду MPLABIDE. Выберете в меню <Debugger\SelectTool\MPLABSIM>.
Скорректируйте код программы, выполняющий заданную арифметическую функцию. Переменные a,b,c,d– знаковые 16-ти разрядные числа.
№ Варианта
|
Арифметическая функция
|
1 |
e = ( a + 1 ) * ( b – 100 ) / (c + 1000)* (d – 1000) |
2 |
e = ( a + b ) * ( c – b ) / (c + d) |
3 |
e = ( a - b ) * ( c / d) + 12345 |
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 ) + 12346 |
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 – 5432 * b |
14 |
e = ( a + c - d ) * ( a - c + d ) / b |
15 |
e = ( a + c * d ) * ( a – c* d ) / b |
Открыть окно Watchи внести в него все регистры, которые используются в коде. В пошаговом режиме отладить код, контролируя изменение регистров в окнеWatch. После отладки программы, показать код и результаты работы программы преподавателю.
Создать блок схему программы.
Дополнительное задание. Реализовать код программы с использование косвенной адресации.
Контрольные вопросы
Назовите основные арифметические инструкции.
Назовите способы адресации, используемые в командах вашей программы.
Назовите количество тактов, за которые выполняются арифметические операции.
Лабораторная работа №4. Циклы. Инструкции сравнения.
Цель работы
Изучить и приобрести практические навыки с командами организации циклов и инструкциями сравнения.
Содержание работы
4.1 Организация цикла
К основным командам организации циклов относятся DOиREPEAT. Рассмотрим основные отличия данных инструкций.
Пример 4.1:
mov #0, W0 mov #mas, W1 do #15, end inc W0, W0 mov W0, [W1++] end: nop |
В данном примере используется инструкция DO. Первыми двумя командами мы инициализируем рабочие регистрыW0 обнуляется, а в регистрW1 заносим начальный адрес массиваmas. Следующая команда определяет начало циклаDO, количество итераций равное 16 (15+1). Цикл заканчивается меткойend. Между началом и концом цикла может находиться необходимое количество команд. Следующая команда инкрементирует регистрW0, а далее значениеW0 записывается в массивmas. Указатель массиваW1 инкрементируется в процессе выполнения операцииmov.
Пример 4.2:
mov #mas1, W1 mov #mas2, W2 repeat #15 mov [W1++], [W2++] nop |
В примере 4.2 используется инструкция REPEAT. Основное отличие данной инструкции отDOчто она выполняет в цикле только следующую за ней инструкцию необходимое количество раз.
Также компилятор поддерживает другое написание данных инструкций. В них вместо заданного числа (#15) можно использовать рабочий регистр. Но перед использованием данной конструкции команды необходимо предварительно задать значение этого рабочего регистра.