- •Кафедра «Мехатронные системы»
- •Изучение способов адресации микроконтроллера msp430f2013
- •Ижевск 2012
- •Введение
- •Задание
- •1 Порядок выполнения работы
- •2 Структура и содержание отчета
- •3 Контрольные вопросы для защиты лабораторной работы
- •Литература
- •Приложение а
- •Варианты индивидуальных заданий
- •Приложение б
- •Архитектура цпу msp430
- •Приложение в (справочное) Организация памяти микроконтроллеров семейства msp430
- •Приложение г
- •Способы адресации операндов в памяти микроконтроллеров семейства msp430
- •Приложение д (справочное) Форматы команд цпу микроконтроллеров семейства msp430
- •Приложение е (справочное) Список ассемблерных команд цпу микроконтроллеров семейства msp430
- •Приложение ж
- •Исходный текст программы работы с элементами массива на ассемблере
Приложение ж
(справочное)
Исходный текст программы работы с элементами массива на ассемблере
Исходный текст программы, заменяющей в массиве из 16-ти однобайтных элементов отрицательные числа на их модули, приведен на рисунке Ж.1.
#include
"msp430.h" ; подключаем заголовочный
файл
NAME
main ; имя модуля PUBLIC
main ; установить видимость модуля
из других
;
Определение констант ArrLn
EQU 16 ; длина массива
;определение
данных в ОЗУ RSEG
DATA16_N RamArr: DS8
ArrLn
;определение
данных в ПЗУ RSEG
DATA16_C RomArr: DC8
-101, 11, 25, 57, 7, -1, 2, 96, -123, 7, 127, 65, 5, 23, 98, -2
;
Вектора прерываний RSEG
INTVEC ORG
RESET_VECTOR ; вектор
сброса DC16
init
RSEG
CSTACK ; объявление сегмента
стека
RSEG
CODE ; объявление сегмента
кода
init:
MOV
#SFE(CSTACK), SP ; инициализация регистра
стека
main:
; начало основной
части MOV.W
#WDTPW+WDTHOLD,&WDTCTL ; останов сторожевого
таймера
;
Переписать из ПЗУ в ОЗУ массив данных mov
#ArrLn, R4 ; инициализируем счётчик
количества данных mov
#RamArr, R5 ; установим R5 как указатель
на данные в ОЗУ mov
#RomArr, R6 ; установим R6 как указатель
на данные в ПЗУ
MoveRomToRam: mov.b
@R6+, 0(R5) ; копирование байта inc
R5 ; продвинем указатель dec
R4 ; уменьшим счётчик jnz
MoveRomToRam ; если не ноль, то повторим
Рисунок Ж.1 – Исходный текст тестовой программы на ассемблере
;проверяем
отрицательные элементы массива от
конца к началу loop:
dec
R5 inc
R4 bit.b
#0x80,0(R5) ;проверка первого бита jz
next ;если число>0, то переходим
к следующему inv.b
0(R5) ; иначе инвертируем биты, inc.b
0(R5) ;добавляем 1, получаем модуль
отр. числа next:
cmp #ArrLn, R4 ;если прошли все элементы,
то задача выполнена, jnz
loop ;иначе переход к следующему элементу
JMP
$ ; бесконечный цикл
END
Рисунок Ж.1 - Продолжение