Описание:
Вызов подпрограммы из памяти программ. Адрес возврата (к команде после CALL) сохраняется в стеке. (См. также RCALL).
Операция:
| (i) | Приборы с 16-разрядным счетчиком программ, максимальный объем памяти программ 128К. | |
| (i) | Приборы с 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