Навигация по странице:«МИРЭА – Российский технологический университет» РТУ МИРЭАОтчет по лабораторной работе №1MOV Rn, data n = 0-7Запись в регистр Rn данных data.MOV ad, data Запись по адресу ad данных data.MOV A, @RnINC Rn n = 0-7Прибавление единицы к данным, записанным на регистре Rn.DEC RnXCH A, ad Обмен данными между аккумулятором и адресом ad.JZ rel Переход по адресу или метке rel, если на аккумуляторе ноль.MOV ad, @RnSUBB A, ad Вычитание с заемом из аккумулятора значения, записанного в ВПД по адресу ad.JBC bit, relSJMP rel Безусловный переход по метке rel.PUSH ad
|
микропроцессоры. Отчет по лабораторной работе 1 Изучение команд микроконтроллера mcs51
|
|
| МИНОБРНАУКИ РОССИИ
| Федеральное государственное бюджетное образовательное учреждение
высшего образования
«МИРЭА – Российский технологический университет»
РТУ МИРЭА
| Институт Информационных технологий
Кафедра Вычислительной техники
Отчет по лабораторной работе №1
«Изучение команд микроконтроллера MCS-51»
По дисциплине
«Микропроцессорные системы»
Выполнил:
Студент группы ИВБО-04-19
|
Трушкина Э.С.
Прокопишин Г.Н.
| Проверил:
| Семенов Р.Э.
| МОСКВА 2022 г.
Содержание 1.Лабораторная работа № 1 3
1.1Задание 3
1.2Используемые регистры и ячейки памяти 3
1.3Алгоритм решения задачи 3
1.4Описание используемых команд 5
1.5Код программы 6
1.6Результат программы 7
Лабораторная работа № 1 Задание Вариант 4.
Найти наибольший элемент массива, расположенного во внутренней памяти, и сохранить его значение в стеке.
Таблица 1. Используемые регистры и ячейки памяти
Регистр или ячейка памяти
| Назначение
| R0(0000h)
| Адрес текущего элемента массива. В начальный момент содержит адрес начала массива 0010h.
| R1(0001h)
| Количество элементов массива. Счетчик итераций.
| R2(0002h)
| Регистр для временного хранения данных (элемента массива, с которым в данной итерации ведется работа).
| 0008h
| Наибольший элемент массива данных, записанный в стек после завершения работы программы.
| 0010h-0013h
| Данные
|
Алгоритм решения задачи Алгоритм решения задачи представлен на рисунке 1.
Рисунок 1 – Блок-схема алгоритма решения задачи
Описание используемых команд MOV Rn, #data
n = 0-7
Запись в регистр Rn данных #data.
MOV ad, #data
Запись по адресу ad данных #data.
MOV A, @Rn
n = 0-1
Запись из внутренней памяти данных (ВПД) в аккумулятор данных, расположенных по адресу, который содержится в регистре Rn.
INC Rn
n = 0-7
Прибавление единицы к данным, записанным на регистре Rn.
DEC Rn
n = 0-7
Вычитание единицы из данных, записанных на регистре Rn.
XCH A, ad
Обмен данными между аккумулятором и адресом ad.
JZ rel
Переход по адресу или метке rel, если на аккумуляторе ноль.
MOV ad, @Rn
n = 0-7
Запись по прямому адресу данных из ВПД, адрес которых записан в регистре Rn.
SUBB A, ad
Вычитание с заемом из аккумулятора значения, записанного в ВПД по адресу ad.
JBC bit, rel
Переход по адресу или метке rel, если установлен бит bit, с очисткой этого бита.
SJMP rel
Безусловный переход по метке rel.
PUSH ad
Запись в стек значения, записанного по адресу ad.
Код программы Листинг 1 – код программы
Start:
MOV R0, #0010h; Начальный адрес массива
MOV R1, #0004h; Кол-во эл-тов
MOV A, @R0; Первый (эталонный) эл-т - на аккумуляторе
INC R0; Следующий адрес эл-та
DEC R1; Декремент кол-ва эл-тов
XCH A, 0001h; Обмен аккумулятора и R1 (эталонный эл-т на R1)
JZ Если на аккумуляторе ноль (эл-ты массива кончились) - конец программы
XCH A, 0001h; Обмен аккумулятора и R1 (эталонный эл-т на A)
MOV 0002h, @R0; Запись в R2 след. эл-та, адрес которого на R0
XCH A, 0002h; Обмен аккумулятора и R2 (эталонный эл-т на R2)
SUBB A, 0002h; Вычитание из следующего элемента эталонного
XCH A, 0002h; Обмен аккумулятора и R2 (эталонный эл-т на A)
JBC если есть перенос (эл-т меньше эталонного) - переходим к следующему элементу
MOV A, @R0 иначе - записываем значение в аккумулятор
Переходим к след. эл-ту
PUSH 0001h; Запись результата в стек
END
|
Результат программы Рисунок 1- результат работы программы |
|
|