Команда RJMP
Синтаксис: RJMP n
где -2048 < n < 2048 (-2K < n < 2K)
Команда относительного перехода через n+1 команду. Переход можно осуществить не более чем на 2048 команд в обе стороны.
Пример:
rjmp Init ; Перейти к адресу с меткой Init, ;находящемуся в пределах двух килобайт от ;текущей позиции.
Команда IJMP
Синтаксис: IJMP
Команда косвенного перехода к адресу, записанному в регистровой паре Z. Под регистровой парой Z тут нужно понимать 30-й и 31-й регистры.
Команда JMP
Синтаксис: JMP addr
где 0 < addr < 4 000 000 (0 < addr < 4M)
Команда прямого перехода к указанному адресу.
Пример:
jmp Init ; Перейти к адресу с меткой Init
Команды обращения к процедурам
Команда RCALL
Синтаксис: RCALL n
где -2048 < n < 2048 (-2K < n < 2K)
Команда относительного вызова подпрограммы, расположенной через n+1 команду от текущей позиции. Переход можно осуществить не более чем на 2048 команд в обе стороны.
Пример:
rcall Init ; Вызвать процедуру Init, находящуюся по ;адресу, расположенному в пределах двух ;килобайт от текущей позиции.
Команда ICALL
Синтаксис: ICALL
Команда косвенного вызова процедуры через регистровую пару Z. Под регистровой парой Z понимается 30-й и 31-й регистры.
Команда CALL
Синтаксис: CALL addr
где 0 < addr < 4 000 000 (0 < addr < 4M)
Команда непосредственного вызова процедуры по её стартовому адресу. Позиция вызова заносится в стек. Важно:
1. Процедура обязательно должна быть завершена командой RET.
2. Стек имеет конечный объем, потому в случае рекуррентных процедур нужно тщательно планировать вычислительный процесс, избегая переполнения стека.
Пример:
call my_proc ; Вызов процедуры, находящейся по
; адресу с меткой «my_proc».
Команда RET
Синтаксис: RET
Команда возврата из процедуры к позиции, записанной в стек при вызове.
Команда RETI
Синтаксис: RET
Команда возврата из глобального прерывания к позиции, записанной в стек при возникновении прерывания. Устанавливает или сбрасывает флаг I регистра флагов.
Команды условного перехода
Команда CPSE
Синтаксис: CPSE Rd, Rr
где 0 < d < 31, 0 < r < 31
Команда межрегистрового сравнения и перехода через последующую команду, в случае равенства содержимого регистра источнике и регистра приёмнике.
Пример:
cpse r28, r30 ; Перешагнуть следующую команду, ;если содержимое r28 = r30
Команда SBRC
Синтаксис: SBRC Rd, n
где 0 < d < 31, 0 < n < 7
Команда перехода через последующую команду, в случае, когда указанный бит в регистре приёмнике сброшен (равен нулю).
Пример:
sbrc r0, 2 ;Перешагнуть следующую команду в ;случае, когда содержимое r0 вида xxxxx0xx
Команда SBRS
Синтаксис: SBRS Rd, n
где 0 < d < 31, 0 < n < 7
Команда перехода через последующую команду, в случае, когда указанный бит в регистре приёмнике установлен (равен единице).
Пример:
sbrs r30, 5 ;Перешагнуть следующую команду в случае,
;когда в регистре r30 установлен 5й бит.
Команда SBIC
Синтаксис: SBIC Rd, n
где 0 < d < 31, 0 < n < 7
Команда перехода через последующую команду, в случае, когда указанный бит в регистре I/O сброшен (равен нулю).
Пример:
sbic pina, 5 ; Перешагнуть следующую команду в случае, когда порт А содержит последовательность вида xx0xxxxx
Команда SBIS
Синтаксис: SBIS Rd, n
где 0 < d < 31, 0 < n < 7
Команда перехода через последующую команду, в случае, когда указанный бит в регистре I/O установлен (равен единице).
Пример:
sbis pinb, 3 ; Перешагнуть следующую команду в случае, когда порт B содержит последовательность вида xxxx1xxx
Команда BRBS
Синтаксис: BRBS s, k
где 0 < s < 7, -64 < k < 63
Команда относительного перехода через k+1 команду, в случае, если указанный флаг статусного регистра установлен (равен единице). Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Пример:
brbs 3, Exit ; Переход на метку Exit, находящуюся в пределах 64 команд в случае, когда установлен флаг переполнения
Команда BRBC
Синтаксис: BRBC s , k
где 0 < s < 7, -64 < k < 63
Команда относительного перехода через k+1 команду, в случае, если указанный флаг статусного регистра сброшен (равен нулю). Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Пример:
brbc 1, Exit ; Переход на метку Exit, находящуюся в пределах 64 команд в случае, когда сброшен флаг нулевого значения
Команда BREQ
Синтаксис: BREQ n
где -64 < n < 63
Команда относительного перехода через n+1 команду, если в результате выполнения предыдущей команды флаг нулевого значения установлен в единицу. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRNE
Синтаксис: BRNE n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если после выполнения предыдущей команды флаг нулевого значения сброшен, т.е. равен нулю. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRCS
Синтаксис: BRCS n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если установлен (равен единице) флаг переноса. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRCC
Синтаксис: BRCC n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если сброшен (равен нулю) флаг переноса. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRSH
Синтаксис: BRSH n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если после выполнения предыдущей команды сброшен флаг переноса (равный нулю). Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRLO
Синтаксис: BRLO n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если после выполнения предыдущей команды установлен (равен единице) флаг переноса. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRMI
Синтаксис: BRMI n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если установлен (равен единице) флаг отрицательного значения. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRPL
Синтаксис: BRPL n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если сброшен (равен нулю) флаг переноса. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRGE
Синтаксис: BRGE n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если после выполнения предыдущей команды по предыдущей команде. Определяющую роль играет равенство нулю суммы по модулю 2 флагов отрицательного значения и переполнения. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRLT
Синтаксис: BRLT n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если после выполнения предыдущей команды установлен флаг знака (S) регистра статуса. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRHS
Синтаксис: BRHS n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если установлен (равен единице) флаг половинного переноса. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRHC
Синтаксис: BRHC n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если сброшен (равен нулю) флаг половинного переноса. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRTS
Синтаксис: BRTS n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если установлен (равен единице) пользовательский флаг. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRTC
Синтаксис: BRTC n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если сброшен (равен нулю) пользовательский флаг. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRVS
Синтаксис: BRVS n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если установлен (равен единице) флаг переполнения. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRVC
Синтаксис: BRVC n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если сброшен (равен нулю) флаг переполнения. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRIE
Синтаксис: BRIE n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если установлен (равен единице) флаг глобального прерывания, то есть прерывание разрешено. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Команда BRID
Синтаксис: BRID n
где -64 < n < 63
Команда относительного перехода через n+1 команду, в случае, если сброшен (равен нулю) флаг глобального прерывания, то есть прерывание запрещено. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.
Дата: 2018-12-28, просмотров: 238.