- •Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
- •«Вычислительные машины, системы и сети»
- •Оглавление
- •Требования к оформлению отчетов по лабораторным работам
- •Лабораторная работа №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. Ассемблерные инструкции микропроцессора
Контрольные вопросы
Назовите основные инструкции сравнения.
Назовите способы адресации, используемые в командах вашей программы.
Назовите количество тактов, за которые выполняются инструкции сравнения.
Можно ли использовать цикл REPEAT, если в теле цикла несколько команд?
Можно ли использовать цикл DO, если в теле цикла одна команда?
Можно ли использовать циклы DOиREPEAT, если заранее неизвестно количество итераций цикла?
Лабораторная работа №5. Работа со стеком.
Цель работы
Изучить и приобрести практические навыки со стеком.
Содержание работы
Стеком называют область программы для временного хранения произвольных данных. Данные можно сохранять и в сегменте данных, однако в этом случае для каждого сохраняемого на время данного надо заводить отдельную именованную ячейку памяти, что увеличивает размер программы и количество используемых имен. Удобство стека заключается в том, что его область используется многократно. Стек традиционно используется, например, для сохранения содержимого регистров, используемых программой, перед вызовом подпрограммы, которая, в свою очередь, будет использовать эти же регистры процессора. Исходное содержимое регистров извлекается из стека после возврата из подпрограммы. Отличительной особенностью стека является своеобразный порядок выборки содержащихся в нем данных: в любой момент времени в стеке доступен только верхний элемент, т.е. элемент, загруженный в стек последним. Выгрузка из стека верхнего элемента делает доступным следующий элемент.
Элементы стека располагаются в области памяти, отведенной под стек, начиная со дна стека (т.е. с его максимального адреса) по последовательно уменьшающимся адресам. Адрес верхнего, доступного элемента хранится в регистре-указателе стека.
К основным операциям работы со стеком относятся.
PUSH - помещает на вершину стека (TOS) значение операнда. Предыдущее значение, находящееся на вершине стека перемещается на один уровень вниз.
POP - извлекает значение из вершины стека в операнд, перемещает все содержимое стека на один уровень вверх.
Синтаксис написания арифметических инструкций приведен в приложении А, таблица 8.
5.1 Помещение в стек
Примеры помещения в стек
PUSHW1;
Помещает в вершину стека значение регистра W1 (16-ти битный режим).
PUSH.DW1;
Помещает в вершину стека значения регистров W1:W2 (32-х битный режим).
5.2 Извлечение из стека
Примеры извлечения из стека
POPW1;
Извлекает значение из вершины стека в регистр W1
POP.DW1;
Извлекает значения из вершины стека в регистры W1:W2 (двойное извлечение).
Пример программы, реализующий арифметическую функцию: e = (a + b) * (c-1) / (d+2) с ограничением числа используемых регистров.
.include "p33FJ256GP710.inc" .equ a, 0x800 .equ b, 0x802 .equ c, 0x804 .equ d, 0x806 .equ e, 0x808 .text .global __reset __reset: ; - Инициализация переменных mov #1, W2 mov W2, a ; a:=1 mov #2, W2 mov W2, b ; b:=2 mov #3, W2 mov W2, c ; c:=3 mov #4, W2 mov W2, d ; d:=4 ; - Реализация арифметической функции mov a, W2 ; W2:=a mov b, W4 ; W4:=b add W2, W4, W2 ; W2:=W2+W4 push W2 ; поместить в вершину стека значение W2 mov c, W2 ; W2:=c mov #1, W4 ; W4:=1 sub W2, W4, W2 ; W2:=W2-W4 pop W4 ; извлечь из вершины стека значение в W4 mul.ss W2, W4, W2 ; W2:W3=W2*W4 push.d W2 ; поместить в вершину стека значение W2:W3 mov d, W2 ; W2:=d mov #2, W4 ; W4:=2 add W2, W4, W4 ; W4:=W2+W4 pop.d W2 ; извлечь из стека значение в W2:W3 repeat #17 div.s W2, W4 ; W0:W1=W2/W4 mov W0, e ; e:=W0 nop .end |
В рассмотренной программе операции производятся с использованием двух регистров W2 иW4. Использование дополнительных регистровW0 иW3 обусловлено спецификой командMUL.SSиDIV.S.