Изучение структурной организации и системы команд микроконтроллеров семейства МК51
Нахождение наибольшего элемента массива, расположенного во внутренней памяти, сохранение его значения в стеке. Описание используемых команд: запись из внутренней памяти в аккумулятор данных, безусловный переход по метке. Составление кода программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 18.11.2014 |
Размер файла | 41,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Лабораторная работа №1
Микропроцессорные системы
"Изучение структурной организации и системы команд микроконтроллеров семейства МК51"
Выполнил
Черкасов А.О.
Москва -- 2012г.
Задание
Найти наибольший элемент массива, расположенного во внутренней памяти, и сохранить его значение в стеке.
Используемые регистры и ячейки памяти
Регистр или ячейка памяти |
Назначение |
|
R0 (0000h) |
Адрес текущего элемента массива. В начальный момент содержит адрес начала массива - 0010h. |
|
R1 (0001h) |
Количество элементов массива. Счетчик итераций. |
|
R2 (0002h) |
Регистр для временного хранения данных (элемента массива, с которым в данной итерации ведется работа). |
|
0008h |
Наибольший элемент массива данных, записанный в стек после завершения работы программы. |
|
0010h-0013h |
Данные. |
Алгоритм решения задачи
n - адрес начального элемента массива
m - количество элементов
d0…dm - элементы массива
Описание используемых команд
MOVRn, #data
n = 0-7
Запись в регистр Rn данных #data.
MOV ad, #data
Запись по адресу ad данных #data.
MOVA, @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.
Код программы
; //--------------------------------------------------------------//
; // Описание : Lab. Work (ASM Version) //
; // Copyright : MIREA, 1998 - 2000 //
; // Процессор : МК 51 //
; // Версия : 1.0 //
; // Ассемблер : A51 v. 6.02 //
; // Дата : XX.XX.2001 //
; // Комментарии : Файл-заготовка //
; //-------------------------------------------------------------//
; --- Заголовок программы. Не изменяйте его !!! ----
NAME LAB_DEMO
USING 0 ; Использовать банк регистров 0
Jmp Start ; Начало программы
ORG 03h
LJmp Ext0Srv ; Адрес обработчика EXT INT 0
ORG 0BH ; Адрес обработчика TIMER INT 0
LJmp Time0Srv ;
ORG 13H ; Адрес обработчика EXT INT 1
LJmp Ext1Srv ;
ORG 1BH ; Адрес обработчика TIMER INT 1
LJmp Time1Srv ;
ORG 23H ; Адрес обработчика прерывания от
LJmp RiTiSrv ; последовательного порта
; --- Конец заголовка ----
;---------- Здесь вводите код программы ----------
;---------- Инициализация------------------------------
Start:MOV R0, #0010h; Начальный адрес массива
MOV R1, #0004h; Кол-во эл-тов
;---------- Данные----------------------------------------
MOV 0010h, #0Ah
MOV 0011h, #0Bh
MOV 0012h, #07h
MOV 0013h, #0Fh
;---------- Конец данных-------------------------------
MOV A, @R0; Первый (эталонный) эл-т - на аккумуляторе
;---------- Конец инициализации--------------------
;---------- Главный цикл-------------------------------
Loop:INC R0; Следующий адрес эл-та
DEC R1; Декремент кол-ва эл-тов
XCH A, 0001h; Обмен аккумулятора и R1 (эталонный эл-т на R1)
JZ EndLoop; Если на аккумуляторе ноль (эл-ты массива кончились) - конец программы
XCH A, 0001h; Обмен аккумулятора и R1 (эталонный эл-т на A)
MOV 0002h, @R0; Запись в R2 след. эл-та, адрес которого на R0
XCH A, 0002h; Обмен аккумулятора и R2 (эталонный эл-т на R2)
SUBB A, 0002h; Вычитание из следующего элемента эталонного
XCH A, 0002h; Обмен аккумулятора и R2 (эталонный эл-т на A)
JBC cy, Loop; Если есть перенос (эл-т меньше эталонного) - переходим к следующему элементу
MOV A, @R0; Иначе - записываем значение в аккумулятор
sjmp Loop; Переходим к след. эл-ту
EndLoop:PUSH 0001h; Запись результата в стек
sjmp EndlessLoop
EndlessLoop:sjmp EndlessLoop; Бесконечный цикл
;---------- Конец главного цикла-------------------
;---------- Конец программы------------------------
; Обработчики прерываний.
Ext1Srv: RETI
Time0Srv: RETI
Time1Srv: RETI
RiTiSrv: RETI
Ext0Srv: RETI
RetIE0: RETI
END
Размещено на Allbest.ru
Подобные документы
Анализ возможности разработки системы автоматизированного контроля на базе микроконтроллера МК51. Анализ структурной схемы МК51, портов ввода/вывода данных, возможности организации доступа к внешней памяти. Обзор системы команд МК51. Резидентная память.
курсовая работа [108,7 K], добавлен 15.01.2012Архитектура микроконтроллеров семейства Mega. Организация памяти. Способы адресации памяти данных. Энергонезависимая память данных. Таблица векторов прерываний. Счетчик команд и выполнение программы. Абсолютный вызов подпрограммы. Сторожевой таймер.
дипломная работа [213,9 K], добавлен 02.04.2009Функциональная схема микропроцессора Intel 8086 (i8086). Формирование физического адреса памяти, выборка команд из памяти и запись их в очередь команд. Система команд процессора. Суть защищенного режима, переход из защищенного режима в реальный режим.
практическая работа [93,3 K], добавлен 24.03.2013Разработка на языке ассемблера алгоритма контроля, на циклический CRC-код, массива данных хранящегося в некоторой области памяти. Сохранение кода для последующей периодической проверки массива данных. Сообщение об искажении данных. Описание алгоритма.
курсовая работа [453,0 K], добавлен 27.02.2009Компьютерная память, ее виды и классификации. Составляющие внутренней памяти процессорной системы (постоянное и оперативное запоминающие устройства). Построение пространства памяти заданного объема. Принцип записи и чтения информации, структура памяти.
контрольная работа [609,8 K], добавлен 12.01.2015Типы системной памяти. ОЗУ (оперативное запоминающее устройство), ПЗУ (постоянное запоминающее устройство), "энергонезависимая память" (CMOS). Процессор. Основные шины. Адресные данные. Совокупность всех возможных команд - система команд процессора.
контрольная работа [24,3 K], добавлен 30.03.2009Разработка структурной схемы процессора; синтез микропрограммного и управляющего автомата с жесткой логикой. Функциональная организация процессора: программные модели, форматы данных и команд. Организация оперативной памяти. Проектирование блока операций.
учебное пособие [1,1 M], добавлен 09.04.2013Изучение понятия внутренней памяти компьютера, которая представлена в виде отдельных интегральных микросхем, выполняющих непосредственно функцию хранения программ и данных. Технологический цикл производства ИМС. Физическая организация внутренней памяти.
контрольная работа [35,1 K], добавлен 22.11.2010Структура микропроцессорной системы. Длина объектного кода команды. Входные и выходные данные. Представление чисел в эмуляторе. Команды, работающие со стеком и памятью. Запись данных в адрес памяти. Состояние ячеек памяти. Алгоритм загрузки программы.
курсовая работа [319,1 K], добавлен 07.08.2013Сравнение различных способов обхода данных. Заполнение массива для случайного обхода. Изучение понятия кэш-памяти, ее основных размеров и функций. Оптимальный и неоптимальный алгоритм умножения двух матриц с точки зрения порядка обхода данных в памяти.
презентация [94,7 K], добавлен 02.06.2013