Skip to content

Sample programs

Pavel Dovgalyuk edited this page Nov 22, 2017 · 57 revisions

Table of Contents

Fibonacci sequence

 ; A, B, or C contain successive elements of the sequence
  ORG 0
  MOVI B, 1    ; 00: 1000 0001 0000 0001 (8101h)
 Label:
  ADD C, B, A  ; 01: 0100 1010 0001 1000 (4B18h)
  MOV A, B     ; 02: 0001 1000 0001 0000 (1810h)
  MOV B, C     ; 03: 0001 1001 0010 0000 (1920h)
  JMP Label    ; 04: 1000 0111 0000 0001 (8701h)

Euclid's algorithm

  ; A, B - operands, A - result
  MOVI A, op1
  MOVI B, op2
 LOOP:
  OR F, A, A
  JMP Z, END
  OR F, B, B
  JMP Z, END

Multiplication subroutines

TODO

8x8 -> 16

 ; C, D - operands, pair AB - result
  MOVI C, op1
  MOVI D, op2
  MOVI A, 0
  MOVI B, 0
  MOVI M, 0
 Loop:
  SHR C, C
  JMP NC, Next
  ADD A, A, D
  ADC B, B, M
 Next:
  ADD D, D, D
  ADC M, M, M
  OR C, C, C
  JMP NZ,Loop
  HALT

8x8 -> 8

 ; C, D - operands, A - result
  MOVI C, op1
  MOVI D, op2
  MOVI A, 0
 Loop:
  SHR C, C
  JMP NC, Next
  ADD A, A, D
 Next:
  ADD D, D, D
  OR C, C, C
  JMP NZ,Loop
  HALT

Division subroutines

8/8 -> 8

 ; D, E - operands, D - result, A - remainder
  MOVI D, op1
  MOVI E, op2
  MOVI A, 0
  MOVI C, 0
  MOVI B, 8
 LOOP:
  SHR C, C
  ADC D, D, D
  ADC A, A, A
  SUB F, A, E
  ADC C, C, 0
  XOR C, C, 1
  JMP Z, NEXT
  SUB A, A, E
 NEXT:
  SUB B, B, 1
  JMP NZ, LOOP
  SHR C, C
  ADC D, D, D
  HALT

Clone this wiki locally