Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1186 | savelij | 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 | |||
| 97 | ;----------------------------------------------------- |
||
| 98 | ; standard Intel/MASM-style pseudo instructions |
||
| 99 | |||
| 100 | dn 8 dup(1,2,3) |
||
| 101 | db 4 dup(1,2,3) |
||
| 102 | dw 4 dup(1,2,3) |
||
| 103 | include "../t_dx/t_dd.inc" |
||
| 104 | include "../t_dx/t_dq.inc" |
||
| 105 | include "../t_dx/t_dt.inc" |
||
| 106 | include "../t_dx/t_do.inc" |