Главная » Статьи » Proton PICBasic

Специальные мнемоники в компиляторе Proton(Статья Les Johnson)

Они были написаны так, чтобы у программистов на Basic были преимущества эффективности ассемблера, при том, что остается синтаксис языка высокого уровня.

Команда ROL вращает влево содержимое регистра через флаг Carry(STATUS.0).

Синтаксис: -
ROLVar {,CLEAR\SET}

Если после выражения стоит CLEAR(или 0), то перед вращением флаг Carry будет очищен. Если после выражения стоит SET(или 1) то перед вращением флаг Carry будет очищен. Eсли же отсутствует какой либо текст, то флаг остается нетронутым.

ROL VAR1,CLEAR 'Сбрасывает Carry перед вращением

ROL VAR1, SET 'Устанавливает Carry перед вращением

ROL VAR1 'Флаг Carry остается нетронутым

Переменная может быть константой, переменной типа BIT, BYTE, WORD, или DWORD. Выражения, массивы и переменные с плавающей запятой не поддерживаются.

Команда ROR вращает переменную вправо через флаг Carry(STATUS.0).

Синтаксис: -

ROR Var{,CLEAR\SET}

По аналогии с предыдущей мнемоникой:

Если после выражения стоит CLEAR(или 0), то перед вращением флаг Carry будет очищен. Если после выражения стоит SET(или 1) то перед вращением флаг Carry будет очищен. Eсли же отсутствует какой либо текст, то флаг остается нетронутым.

ROR VAR1,CLEAR 'Сбрасывает Carry перед вращением

ROR VAR1, SET 'Устанавливает Carry перед вращением

ROR VAR1 'Флаг Carry остается нетронутым

Переменная может быть константой, переменной типа BIT, BYTE, WORD, или DWORD. Выражения, массивы и переменные с плавающей запятой не поддерживаются.

Команда DJNZ - одна из нескольких команд приращения или декремента переменной типа BYTE. Проверяет переменную на равенство нулю или переполнение. При выполнении одного из этих условий, переходит на выполнение следующей команды.

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

IJNZ обозначает инкремент(приращение) и переход, если переменная не равна нулю.

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

IJZ обозначает инкремент(приращение) и переход, если переменная равна нулю.

DJNC обозначает декремент и переход, если флаг Carry не установлен.

IJNC обозначает инкремент и переход, если флаг Carry не установлен

DJC обозначает декремент и переход, если установился флаг Carry.

IJC обозначает gриращение и переход, если установился флаг Carry.

Синтаксис: -

DJNZ Var, Label

Переменная(Var) должна быть переменной типа BYTE.

Метка(Label) должна быть меткой Basic-программы.

Вышеупомянутая команда означает следующее: -

Декремент переменной и переход на метку, если переменная не достигла нуля.

Команды, использующие флаг Carry, позволяют определить, была ли переполнена переменная или прошла через ноль.

Пример: -

DIM VAR1 AS BYTE

VAR1 = 8 'Установим количество проходов, равное 8

Loop:

DJNZ VAR1, Loop 'Декремент переменной VAR1, пока не достигнет 0

'Продолжить выполнение программы, если переменная достигла 0.

Команды типа IJxx и DJxx поддерживают переключение страниц и блоков памяти на 14-разрядных контроллерах, поэтому, в связи с этим, будет небольшой проигрыш по эффективности, но это всегда неизбежно с большими 14-битными контроллерами. Однако никаких ограничений не наложено на 16-разрядные устройства, поэтому эти команды позволяют увеличить эффективность при использовании устройств 18 серии (которые, так или иначе, рекомендуются для новых проектов).

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




Категория: Proton PICBasic | Добавил: ADMIN (04.05.2011)
Просмотров: 6579 | Теги: Ассемблер, команды, PROTON, мнемоники | Рейтинг: 5.0/5
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]