Shenzhen I/O Wiki

Instructions[]

Basic Instructions[]

  • nop (This instruction has no effect)
  • mov R/I R (Copies the first operand into to the second operand)
  • jmp L (Jumps to the instruction following the specified label)
  • slp R/I (Sleeps for the number of time units specified by the operand)
  • slx P (Sleeps until data is available to be read on the XBus Pin specified by the operand)
  • gen P R/I R/I (Generates a pulse on the specified Pin for the number of time units specified by the first and second operand)

Arithmetic Instructions[]

  • add R/I (Adds the value of the operand to the value in the acc register)
  • sub R/I (Subtracts the value of the operand from the value in the acc register)
  • mul R/I (Multiplies the operand by the value in the acc register, then overrides the acc register with the result)
  • not (Inverts the acc register to 0 or 100 depending on if it is 100 or 0)
  • dgt R/I (tbd)
  • dst R/I R/I (tbd)

Test Instructions (works as if statements)[]

  • teq R/I R/I (tbd)
  • tgt R/I R/I (tbd)
  • tlt R/I R/I (tbd)
  • tcp R/I R/I (tbd)

Registers[]

  • acc
  • dat [1]
  • p0, p1 [1]
  • x0, x1, x2, x3 [1]
  • null

Instruction Operands[]

Notation Meaning
R Register
I Integer [2]
R/I Register or integer [2]
P Pin register (p0, p1, etc)
L Label [3]

[1] Not all register are available on all microprocessors. Refer to the parts datasheets for pin diagrams and register information.

[2] Integer values must be in the range -999 to 999.

[3] Labels used as operands must defined elsewhere in the program.