5 – overflow flag, 7 – controlling program flow, 1 – obtaining the next execution address – Maxim Integrated DS4830A Optical Microcontroller User Manual

Page 197: 2 – unconditional jumps, Ds4830a user’s guide

Advertising
background image

DS4830A User’s Guide

197

• XOR Acc.<b>

(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 DS4830A 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.

Advertising