5 - overflow flag, 7 - controlling program flow, 1 - obtaining the next execution address – Maxim Integrated DS4830 Optical Microcontroller User Manual
Page 186: 2 - unconditional jumps, Ds4830 user’s guide

DS4830 User’s Guide
186
MOVE Acc., C
(Set selected active accumulator bit to Carry)
AND Acc.
(Carry = Carry AND selected active accumulator bit)
OR Acc.
(Carry = Carry OR selected active accumulator bit)
XOR Acc.
(Carry = Carry XOR selected active accumulator bit)
JUMP C, src
(Jump if Carry flag is set)
JUMP NC, src
(Jump if Carry flag is cleared)
23.6.5 - Overflow Flag
The Overflow flag (PSF.2) is a static flag indicating that the carry or borrow bit (Carry status Flag) resulting from the last
ADD/ADDC or SUB/SUBB operation but did not match the carry or borrow of the high order bit of the active accumulator.
The overflow flag is useful when performing signed arithmetic operations.
The following instructions can alter the Overflow flag:
ADD src
(Add source to active accumulator)
ADDC src
(Add source and Carry to active accumulator)
SUB src
(Subtract source from active accumulator)
SUBB src
(Subtract source and Carry from active accumulator)
23.7 - Controlling Program Flow
The DS4830 provides several options to control program flow and branching. Jumps may be unconditional, conditional,
relative or absolute. Subroutine calls store the return address on the hardware stack for later return. Built-in counters and
address registers are provided to control looping operations.
23.7.1 - Obtaining the next execution address
The address of the next instruction to be executed can be read at any time by reading the Instruction Pointer (IP) register.
This can be particularly useful for initializing loops. Note that the value returned is actually the address of the current
instruction plus 1, so this will be the address of the next instruction executed as long as the current instruction does not
cause a jump.
23.7.2 - Unconditional jumps
An unconditional jump can be relative (IP +127/-128 words) or absolute (to anywhere in program space). Relative jumps
must use an 8-bit immediate operand, such as
Label1:
; must be within +127/-128 words of the JUMP
....
jump Label1
Absolute jumps may use a 16-bit immediate operand, a 16-bit register, or an 8-bit register.
jump LongJump
; assembles to: move PFX[0], #high(LongJump)
; jump #low(LongJump)
jump DP[0]
; absolute jump to the address in DP[0]
If an 8-bit register is used as the jump destination, the prefix value is used as the high byte of the address and the register
is used as the low byte.