|
Syntax: |
Operation: |
Operands: |
Program Counter: |
Opcode |
Comment |
Stack: |
|
CALL k |
PC = k Devices with 16-bit PC, 128 KB program memory maximum. |
0 <= k < 64K |
PC = k |
1001010kkkkk111kkkkkkkkkkkkkkkkk |
STACK = PC+2 SP = SP-2, (2 bytes, 16 bits) | |
|
CALL k |
PC = k Devices with 22-bit PC, 8 MB program memory maximum. |
0 <= k < 4M |
PC = k |
1001010kkkkk111kkkkkkkkkkkkkkkkk |
STACK = PC+2 SP = SP-3 (3 bytes, 22 bits) |
Calls to a subroutine within the entire program memory. The return address (to the instruction after the CALL) will be stored on the Stack. (See also RCALL.) The Stack Pointer uses a post-decrement scheme during CALL.
This instruction is not available on all devices. Refer to Appendix A.
|
I |
– |
||
|
T |
– |
||
|
H |
– |
||
|
S |
– |
||
|
V |
– |
||
|
N |
– |
||
|
Z |
– |
||
|
C |
– |
mov r16,r0 ; Copy r0 to r16
call check ; Call subroutine
nop ; Continue (do nothing)
...
check:
cpi r16,0x42 ; Check if r16 has a special value
breq error ; Branch if equal
ret ; Return from subroutine
...
error:
rjmp error ; Infinite loop
2 (4 bytes)
|
Name |
Cycles 16-bit PC |
22-bit PC |
|
AVRxt |
3 |
4 |
|
AVRrc |
N/A |
N/A |
|
AVRe |
4(1) |
5(1) |
|
AVRxm |
3(1) |
4(1) |
Note:
1.
Cycle times for data memory access assume internal RAM access and are not valid for accessing external RAM.