Stack and Jump Instructions

http://www.asm86.cwc.net/

by Ciaran McCreesh
Created: 14th November 1999
Last Modified: 14th November 1999

Stack Instructions

Mnemonic Bytes T-States Description
push qq 1 11 Pushes qq onto the stack
push ii 2 15 Pushes ii onto the stack
pop qq 1 10 Pops qq from the stack
pop ii 2 14 Pops ii from the stack

Relative and Absolute Jumps

Mnemonic Bytes T-States Description
jp nn 3 10 Performs a jump to nn
jp cc,nn 3 10 (+1) Performs a jump to nn if cc is true
jr e 2 12 Performs a relative jump to memory location e bytes away
jr ff,e 2 7 (+5) Performs a relative jump to memory location e bytes away if ff is true
jp hl
jp (hl)
1 4 Performs a jump to hl
Note: some assemblers (eg Assembly Studio and TASM) and the z80 Technical Data use jp (hl). However, it does the same thing and does not jump to (hl).
jp ii
jp (ii)
2 8 Performs a jump to ii
Note: some assemblers (eg Assembly Studio and TASM) and the z80 Technical Data use jp (ii). However, it does the same thing and does not jump to (ii).
djnz e 2 8 (+5) Decrements b and if b is not zero then performs a relative jump to e

Calls, Returns and Restarts

Mnemonic Bytes T-States Description
call nn 3 17 Pushes the program counter onto the stack and jumps to nn
call cc,nn 3 10 (+7) Pushes the program counter onto the stack and jumps to nn if cc is true
ret 1 10 Pops the value on top of the stack into the program counter
ret cc 1 5 (+6) Pops the value on top of the stack into the program counter if cc is true
reti 2 14 Returns from an interrupt
retn 2 14 Returns from a non-maskable interrupt
Note: there are no non-maskable interrupts on the ti86.
rst p 1 11 Pushes the value of the program counter onto the stack and restarts the processor at the specified location
Note: TASM and Assembly Studio both require a two digit number with a lowercase 'h' as the prefix, so neither rst $28 nor rst 0h would assemble.