Обучение : Программирование на Ассемблере для PIC


Команды переходов

Команды переходов используются для перемещения по тексту программы от одной строчки к другой. Для переходов используются метки.

Ни одна программа не может существовать без переходов, т.к. переходы обеспечивают непрерывность и цикличность программы (подробнее об этом в следующем разделе).

Различаются команды переходов без возврата и с возвратом.

 

ПЕРЕХОД НА МЕТКУ в общем виде выглядит как GOTO METKA

 

СПЕЦПЕРЕХОД НА МЕТКУ в общем виде выглядит как CALL METKA

 

ВОЗВРАТ К СПЕЦПЕРЕХОДУ в общем виде выглядит как RETLW K

 

ВОЗВРАТ К СПЕЦПЕРЕХОДУ в общем виде выглядит как RETURN

 

 

 

Спецпереход может быть вложен в другой спецпереход и т.д. не более 8 раз (задействуется т.н. 8-ми уровневый аппаратный стек); как бы то ни было, по команде RETLW K мы возвращаемся к команде, следующей за последним спецпереходом.

Команда RETLW K делает возврат, вставляя при этом в аккумулятор указанное нами число. Работать с этой парой команд (CALL и RETLW) нужно очень внимательно, т.к. можно уйти в одно место программы, а вернуться в другом. Пользу от таких телодвижений мы рассмотрим на практике, т.к. переходы – это то, без чего не может существовать ни одна программа.

Альтернативой команде RETLW K является команда RETURN. Как видно из написания в общем виде, эта команда делает простой возврат без модифицирования содержимого аккумулятора.

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

 

В командах переходов есть частный случай, именуемый как ВЫЧИСЛЯЕМЫЙ ПЕРЕХОД. Рассмотрим пример такого перехода.

 

ВЫЧИСЛЯЕМЫЙ ПЕРЕХОД

PCL   EQU   H0002    ; регистр спец назначения

                     ; со счётчиком команд

; … любая команда

      MOVF  KLOP,W   ; копировать в регистр W число из регистра KLOP

      ADDWF PCL,F    ; сложить содержимое PCL с содержимым W

; … команда 1

; … команда 2

; … команда 3

 

Принцип работы вычисляемого перехода.

Рассматривая метки мы затрагивали работу счетчика команд – это регистр специального назначения PCL по адресу h2. Предположим, что в нашей программе 15 строк с командами, которые выполняются друг за другом. После выполнения первой команды счетчик команд автоматически увеличивается на единицу и т.д. до 15-ой команды. В вычисляемом переходе мы можем принудительно изменить счетчик и перейти на другую строчку (как правило, счётчик увеличивают).

Например, в аккумуляторе W у нас число 0, тогда переход произойдет на строчку "команда 1"; а если у нас в аккумуляторе число 2, тогда переход произойдет на строчку "команда 3", т.е. переход на одну команду больше, чем содержимое в аккумуляторе.

 


<<< назад далее >>>

Просмотров: 32813

 








 
 
 

В русском Интернете бестолку защищать свои права. Хотите использовать материалы - используйте,
но с письменного согласия авторов. В противном случае будут высланы соответствующие письма
в поисковые системы об ограничении индексации ваших сайтов. Не доводите до греха.