Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1.         cpu     mico8_v3
  2.  
  3. ; from user's manual
  4.  
  5.         b _start                ; 0x33001 110011000000000001
  6. _start:
  7.         nop             ; 0x10000 010000000000000000
  8. add:
  9.         movi R00,0x55   ; 0x12055 010010000001010101
  10.         movi R01,0x05   ; 0x12105 010010000100000101
  11.         movi R02,0x03   ; 0x12203 010010001000000011
  12.         add R01,R02     ; 0x08110 001000000100010000
  13.         addi R01,0x01   ; 0x0A101 001010000100000001
  14.         mov R03,R01     ; 0x10308 010000001100001000
  15.         mov R04,R02     ; 0x10410 010000010000010000
  16.         movi R05,0x35   ; 0x12535 010010010100110101
  17.         movi R06,0x43   ; 0x12643 010010011001000011
  18.         add R06,R05     ; 0x08628 001000011000101000
  19.         addi R06,0x13   ; 0x0A613 001010011000010011
  20.         mov R07,R05     ; 0x10728 010000011100101000
  21.  
  22. ; This program will allow user to run a fibonacci number
  23. ; generator and updown counter. This program responds to
  24. ; the interrupt from the user (through Orcastra).
  25. ; When there is an interrupt, the program will halt the current program,
  26. ; and execute the int_handler function. When the intr_handler function
  27. ; is done, the program will continue from its last position
  28.  
  29.         b       int_handler
  30.         nop
  31.         nop
  32.         seti                    ; set the program to be able to receive interrupt
  33.         nop
  34.         nop
  35.         b       start
  36. start:
  37.         import  r5, 5
  38.         mov     r6, r5
  39.         andi    r5, 0xf0        ; masking r5 to decide type of program
  40.         mov     r7, r5
  41.         mov     r5, r6
  42.         andi    r5, 0x0f        ; masking r5 to get the speed
  43.         mov     r25, r5
  44.         cmpi    r7, 0x10
  45.         bz      phase2
  46.         cmpi    r7, 0x20
  47.         bz      phase2
  48.         b       start
  49. phase2:
  50.         cmpi    r25, 0x01
  51.         bz      phase3
  52.         cmpi    r25, 0x02
  53.         bz      phase3
  54.         cmpi    r25, 0x03
  55.         bz      phase3
  56.         cmpi    r25, 0x04
  57.         bz      phase3
  58.         b       start
  59. phase3:
  60.         cmpi    r7, 0x10
  61. ;       bz      fibo
  62.         cmpi    r7, 0x20        ; 1 = fibonacci, 2 = counter
  63. ;       bz      counter
  64.         b       start
  65. int_handler:
  66.         iret
  67.  
  68. ; examples of instruction classes
  69.  
  70.         add     r15,r23
  71.         addi    r2,0x12
  72.  
  73.         rolc    r10,r5
  74.  
  75.         clri
  76.         setz
  77.  
  78.         b       $ + 10
  79.  
  80.         import  r10,21
  81.         export  r10,21
  82.  
  83. ; register aliases
  84.  
  85. myreg1e         equ     r15
  86. myreg2e         equ     r14
  87. myreg1r         reg     r15
  88. myreg2r         reg     r14
  89. myreg1re        reg     myreg1e
  90. myreg2re        reg     myreg2e
  91.  
  92.                 add     r14,r15
  93.                 add     myreg2e,myreg1e
  94.                 add     myreg2re,myreg1r
  95.                 add     myreg2re,myreg1re
  96.