Описание:
Вызов подпрограммы из памяти программ. Адрес возврата (к команде после 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