Команда CALL - Выполнить длинный вызов подпрограммы
Описание:
Вызов подпрограммы из памяти программ. Адрес возврата (к команде после CALL)
сохраняется в стеке. (См. также RCALL).
Операция:
(i) |
PC <-- k |
Приборы с 16-разрядным счетчиком программ, максимальный объем
памяти программ 128К. |
(i) |
PC <-- k |
Приборы с 22-разрядным счетчиком программ, максимальный объем
памяти программ 8М. |
|
Синтаксис |
Операнды: |
Счетчик программ: |
(i) |
CALL k |
0 < k < 64K |
PC <-- kSTACK <-- PC + 2
SP <-- SP-2, (2 байта, 16 битов) |
(i) |
CALL k |
0 < k < 4M |
PC <-- kSTACK <-- PC + 2
SP <-- SP-3, (3 байта, 22 бита) |
16-разрядный код операции:
1001 |
010k |
kkkk |
111k |
kkkk |
kkkk |
kkkk |
kkkk |
Булевы выражения регистра статуса (SREG)
Пример:
mov r16, r0 ; Копировать r0 в r16
call check ; Вызвать подпрограмму
nop ; Продолжать (пустая операция)
. . .
check: cpi r16, $42 ; Проверить содержит ли r16 заданное значение
breq error ; Перейти если содержит
ret ; Вернуться из подпрограммы
. . .
error: rjmp error ; Бесконечная петля
Слов: 2 (4 байта)
Циклов: 4
|