Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Пример задания

.doc
Скачиваний:
18
Добавлен:
15.06.2014
Размер:
25.09 Кб
Скачать

Пример задания

Составить программу, реализующую действие А-В. Если в результате выполнения операции бит заёма установлен, то вызвать подпрограмму START, в которой результат записать в ячейку 160 ОЗУ. Если не установлен, то выполнить действие А+В и результат вывести в порт D (А находится в R2, В находится в R5).

Пример программы и её оформление

.INCLUDE "m8515def.inc" ;Подключить файл описаний имён.

;

;*************** Задание символических имён

;

.def temp=R16 ; Назначить регистру R16 имя temp.

; Регистр R16 будет использоваться для

; временного хранения.

;

;*************** Рабочая программа

;

.CSEG ; Оператор, определяющий начало

; программного сегмента.

.ORG $0 ; Оператор, определяющий физический

; адрес расположения команд в памяти

; программ, следующих за ним.

rjmp reset ; Переход в программу после сброса.

.ORG $20

start: ; Метка подпрограммы с именем "start"

sub R4, R7 ; Выполнить действие R4← R4-R7.

sts $a0, R4 ; Запись результата вычитания R4-R7 в

; ячейку 160 СОЗУ.

Ret ; Возврат из подпрограммы.

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

;*********** Инициализация

reset:

ldi temp, low(RAMEND) ; Инициализация стека.

out SPL, temp ;

ldi temp, high(RAMEND) ;

out SPH, temp ;

ser temp ; temp = 0xFF.

out DDRD, temp ; Настроить порт D как вывод.

;

;*********** Программа

;

m1:

mov R7, R5 ; Из R5 значение "B" переписать в R7.

mov R4, R2 ; Из R2 значение "A" переписать в R4.

cp R4, R7 ; Сравнить А и В (R4-R7)

brcs m2 ; Если флаг переноса (заёма) С=1

; (А<В), то переход на метку m2

add R4, R7 ; Если А>В выполнить R4←R4+R7

out PORTD, R4 ; Вывод результата операции R4+R7 в PD

rjmp m1 ; Переход на метку m1.

m2:

rcall start ; Вызов ПП start

rjmp m1 ; Переход на метку m1.

Соседние файлы в предмете Мехатроника