Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
метод2_MSP430.doc
Скачиваний:
29
Добавлен:
11.03.2015
Размер:
1.18 Mб
Скачать

Приложение ж

(справочное)

Исходный текст программы работы с элементами массива на ассемблере

Исходный текст программы, заменяющей в массиве из 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 - Продолжение

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]