Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

ПРОГРАММА НА АССЕМБЛЕРЕ



Структура программы

Программа, написанная на ассемблере, должна иметь определенную структуру. Ниже приводится рекомендованный для AT90S8535 шаблон. Курсив для выделения комментариев используется в этом примере для наглядности. В реальной программе ассемблер не поддерживает различное форматирование шрифтов.

 

;*****************************************************

; название программы,

; краткое описание, необходимые пояснения

:******************************************************

;******подключаемые дополнительные файлы***********

.include “8535def.inc” ; файл описания AT90S8535

.include «имя_файла1.расширение» ; включение дополнительных

.include «имя_файла2.расширение» ; файлов

;******глобальные константы***********

.equ имя1 = xxxx ;

.equ имя2 = nnnn

;******глобальные регистровые переменные***********

.def имя1= регистр

.def имя2= регистр

;*******сегмент данных***********

.dseg

.org xxxx ; адрес первого зарезервированного байта

label1: .BYTE 1 ; резервировать 1 байт под переменную label1

label2: .BYTE m ; резервировать m байт под переменную label2

;****** сегмент EEPROM (ЭСППЗУ) ***********

.eseg

.org xxxx ; адрес первого зарезервированного байта

.db выражение1,выражение2,… ; записать список байтов в EEPROM.

.dw выражение1,выражение2,… ; записать список слов в EEPROM.

;******сегмент кодов**********

.cseg

.org $0000 ; адрес начала программы в программной памяти

;****** вектора прерываний (если они используются) ***********

rjmp reset ;прерывание по сбросу

.org $0002

rjmp INT0 ;обработчик прерывания IRQ0

.org $0004

rjmp INT1 ;обработчик прерывания IRQ1

.org adrINTx ;адрес следующего обработчика прерываний

rjmp INTx ;обработчик прерывания x

;далее по порядку располагать обработчики остальных ;прерываний

 

;*******начало основной программы**********

main: <команда> xxxx

… …

 

;******* подпрограммы *********

;*******подпрограмма 1**********

subr1: <команда> xxxx

…… ………. ……

ret

;*******подпрограмма 2**********

subr2: <команда> xxxx

…… ………. ……

ret

…………….

;******* программы обработчиков прерываний**********

INT0: <команда> xxxx

…… ………. ……

reti

INT1: <команда> xxxx

…… ………. ……

reti

INTx: <команда> xxxx

…… ………. ……

reti

…… ……… ……

; конец программы никак не обозначается.

 


Алгоритм решения задачи и структура данных

 

Алгоритм программы состоит из двух частей – последовательности операторов, формирующих структуру данных и набора операторов, реализующих метод решения задачи. Составление алгоритма решения задачи и проектирование структуры данных рассматривается на простейшем примере.

Пример 5.1. Вычесть из числа 5 число 3. Если на блоке управления включен тумблер SA1, то на индикацию выдать результат вычитания. Если тумблер SA1отключен – на индикацию вывести цифру ноль.

Алгоритм решения задачи может быть следующим:

проверяется состояние ключа SA1;

если ключ SA1 включен, то необходимо произвести вычитание и запомнить результат и перейти к индикации;

если ключ SA1 выключен, то необходимо просто запомнить ноль и перейти к индикации;

задать или сформировать адрес ячейки, в которой хранится код для индикации результата;

выдать результат на индикацию;

вернуться к проверке состояния ключа SA1 (если предполагается бесконечное выполнение программы).

Параллельно с алгоритмом решения задачи необходимо проектировать и структуру данных – порядок настройки портов, перечень входных и выходных переменных и их адреса, вершину стека. Структуру данных можно представить в виде совокупности нескольких таблиц (таблицы 5.1–5.4).

 

Таблица 5.1. Порядок настройки портов

 

ПОРТЫ Выводы на вход Выводы на выход
Порт А 0 – 7
Порт В 0, 1, 4 – 7 2, 3
Порт С 0 – 7
Порт D 0 – 3 4 – 7

 

Таблица 5.2. Размещение структурных элементов программы

 

ЭЛЕМЕНТ СТРУКТУРЫ ДАННЫХ Имя Адрес Память
Вершина стека SP $025f Регистры I/O
Начало программы $0030 FLASH

 

Таблица 5.3. Перечень констант

 

КОНСТАНТЫ Имя Значение Адрес Память
Адрес кода 0 cod0 $3f $64 SRAM
Адрес кода 1 cod1 $06 $65 SRAM
Адрес кода 2 cod2 $5b $66 SRAM
Адрес кода 3 Cod3 $4f $67 SRAM
Адрес кода 4 Cod4 $66 $68 SRAM
Адрес кода 5 Cod5 $6d $69 SRAM
Адрес кода 6 Cod6 $7d $6a SRAM
Адрес кода 7 Cod7 $07 $6b SRAM
Адрес кода 8 Cod8 $7f $6c SRAM
Адрес кода 9 Cod9 $6f $6d SRAM

 

Таблица 5.4. Перечень переменных

 

ПЕРЕМЕННЫЕ Имя Значение Адрес Память
Уменьшаемое r17 РОН
Вычитаемое r19 РОН
Результат (разность) r20 РОН
Адрес ячейки кода индикации разности r0 РОН
Адрес первого из кодов индикации $64 Z (zh, zl) (r31, r30) РОН
Вспомогательные регистры для промежуточных значений r16, r17 РОН

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.