OpenCores
URL https://opencores.org/ocsvn/copyblaze/copyblaze/trunk

Subversion Repositories copyblaze

[/] [copyblaze/] [trunk/] [copyblaze/] [sw/] [code/] [pBlaze/] [Mnemonics/] [Test_Mnemonics.asm] - Rev 13

Go to most recent revision | Compare with Previous | Blame | View Log

;--------------------------------------------------------------------------------
;-- Company: 
;--
;-- File: Test_Mnemonics.asm
;--
;-- Description:
;--     projet bicoblaze
;--     Test of the mnemonics of the BicoBlaze3 processor
;--
;-- File history:
;-- v1.0: 11/10/11: Creation
;--
;-- Targeted device: ProAsic A3P250 VQFP100
;-- Author: AbdAllah Meziti
;--------------------------------------------------------------------------------

                LOAD      s0, 0x85      ;       s0=85
                LOAD      s3, 0x42      ;       s3=42
                LOAD      s7, s3        ;       s7=42
                AND       s3, 0x23      ;       s3=02
                AND       s7, s0        ;       s7=00
                OR        s3, 0x69      ;       s3=6B
                OR        s7, s0        ;       s7=85
                XOR       s0, 0x42      ;       s0=C7
                XOR       s0, s7        ;       s0=42
                
                ADD       s0, 0x43      ;       s0=85
                ADD       s0, s7        ;       s0=0A (Carry=1)
                ADDC      s0, 0x42      ;       s0=4D
                ADDC      s0, s7        ;       s0=D2
                SUB       s0, 0xE5      ;       s0=ED (Borrow=1)
                SUB       s0, s7        ;       s0=68
                SUBC      s0, 0xA7      ;       s0=C1 (Borrow=1)
                SUBC      s0, s7        ;       s0=3B
                
                LOAD      s0, 0x43      ;       s0=43
                SL0       s0            ;       s0=86
                SLX       s0            ;       s0=0C (Carry=1)
                SLA       s0            ;       s0=19
                SL1       s0            ;       s0=33
                LOAD      s0, 0xB0      ;       s0=B0
                RL        s0            ;       s0=61 (Carry=1)
                
                SRA       s0            ;       s0=B0 (Carry=1)
                SR0       s0            ;       s0=58
                SR1       s0            ;       s0=AC
                SRX       s0            ;       s0=D6
                LOAD      s0, 0xCD      ;       s0=CD
                RR        s0            ;       s0=E6
                
                OUT       s0, 0x30      ;       OUT_PORT=s0=E6, PORT_ID=30
                OUT       s0, s7        ;       OUT_PORT=s0=E6, PORT_ID=s7=85
                IN        s0, 0x20      ;       s0=OUT_PORT=(see external value),       PORT_ID=20
                IN        s0, s7        ;       s0=OUT_PORT=(see external value),       PORT_ID=s7=85

; one line macro for extra instructions
                INST      0x1234
                                        
                LOAD      s0, 0xB8      ;       s0=B8
                COMP      s0, 0x42      ;       C=0, Z=0
                COMP      s0, 0xB8      ;       C=0, Z=1
                COMP      s0, 0xC9      ;       C=1, Z=0
                
                LOAD      s1, 0x44      ;       s1=44
                LOAD      s2, 0xB8      ;       s2=B8
                LOAD      s3, 0xD9      ;       s3=D9
                COMP      s0, s1        ;       C=0, Z=0
                COMP      s0, s2        ;       C=0, Z=1
                COMP      s0, s3        ;       C=1, Z=0

                LOAD      s5, 0x3D      ;       s5=3D
                TEST      s5, 0xFF      ;       C=1
                TEST      s0, s1        ;       (s0 and s1)
                
                LOAD      s1, 0x03      ;       s1=03
                STORE     s0, 0x0A      ;       Scratch(@0A)=s0=E6
                STORE     s0, s1        ;       Scratch(@s1=03)=s0=E6
                FETCH     s4, 0x0A      ;       s4=Scratch(@0A)=E6
                FETCH     s5, s1        ;       s5=Scratch(@s1=03)=E6
                
                
                JUMP      JmpL1         ; Validation
                INST      0xFFFF
                INST      0xFFFF
                INST      0xFFFF
                INST      0xFFFF

JmpL1:
                LOAD      s0, 0x03              ;       s0=03
LoopL1:
                SUB       s0, 0x01              ;       s0=s0-1
                JUMP      NZ, LoopL1    ;       -- Validation

                JUMP      Z, JmpL2              ;       -- Validation
                INST      0xFFFF
                INST      0xFFFF
                INST      0xFFFF
                INST      0xFFFF

JmpL2:
                LOAD      s0, 0x03              ;       s0=03
LoopL2:
                SUB       s0, 0x01              ;       s0=s0-1
                JUMP      NC, LoopL2    ;       -- Validation
                
                JUMP      C, CalL1              ;       -- Validation
                INST      0xFFFF
                INST      0xFFFF
                INST      0xFFFF
                INST      0xFFFF

CalL1:          
                LOAD      s0, 0x03              ;       s0=03
                CALL      Function              ;       -- Validation
                LOAD      s1, 0x03              ;       s1=03
                LOAD      s2, 0x03              ;       s2=03
                LOAD      s3, 0x03              ;       s3=03
                LOAD      s4, 0x03              ;       s4=03

;               CALL      NZ, Function  ;       -- Validation
;               CALL      Z,  Function
;               CALL      NC, Function
                CALL      C,  Function

                load    s0,     0xBB
                call    FuncLoadAllRegister

                EINT                          ; ENABLE INTERRUPT
;               DINT                          ; DISABLE INTERRUPT

                ; clear all register
                load    s0,     0x00
                call    FuncLoadAllRegister

; End LOOP
EndLoop:        
;               JUMP      EndLoop               ;       -- Validation

                ADD      s0, 0x01               ;       s0++
                ADD      s1, 0x01               ;       s1++
                ADD      s2, 0x01               ;       s2++
                ADD      s3, 0x01               ;       s3++
                ADD      s4, 0x01               ;       s4++
                ADD      s5, 0x01               ;       s5++
                ADD      s6, 0x01               ;       s6++
                ADD      s7, 0x01               ;       s7++
                ADD      s8, 0x01               ;       s8++
                ADD      s9, 0x01               ;       s9++
                ADD      sA, 0x01               ;       sA++
                ADD      sB, 0x01               ;       sB++
                ADD      sC, 0x01               ;       sC++
                ADD      sD, 0x01               ;       sD++
                ADD      sE, 0x01               ;       sE++
                ADD      sF, 0x01               ;       sF++

                JUMP      EndLoop               ;       -- Validation

; =====================================================================
; END OF PROGRAM
; =====================================================================

; ****************************************
; Function
; ****************************************
Function:
                LOAD      s1, 0x55              ;       s1=55
                LOAD      s2, 0x55              ;       s2=55
                LOAD      s3, 0x55              ;       s3=55
                LOAD      s4, 0x55              ;       s4=55

                RET                                             ;       -- Validation

;               RET       NZ                    ;       -- Validation
;               RET       Z                             ;       -- Validation

;               RET       NC                    ;       -- Validation
;               RET       C                             ;       -- Validation


; ****************************************
; Load All the register with the s0 value.
; ****************************************
FuncLoadAllRegister:
;               LOAD      s0, s0                ;       s0=s0
                LOAD      s1, s0                ;       s1=s0
                LOAD      s2, s0                ;       s2=s0
                LOAD      s3, s0                ;       s3=s0
                LOAD      s4, s0                ;       s4=s0
                LOAD      s5, s0                ;       s5=s0
                LOAD      s6, s0                ;       s6=s0
                LOAD      s7, s0                ;       s7=s0
                LOAD      s8, s0                ;       s8=s0
                LOAD      s9, s0                ;       s9=s0
                LOAD      sA, s0                ;       sA=s0
                LOAD      sB, s0                ;       sB=s0
                LOAD      sC, s0                ;       sC=s0
                LOAD      sD, s0                ;       sD=s0
                LOAD      sE, s0                ;       sE=s0
                LOAD      sF, s0                ;       sF=s0
                ret
; ****************************************
; Decrement All the register by 1.
; ****************************************
FuncDecreAllRegister:
                SUB      s0, 0x02               ;       s0--
                SUB      s1, 0x02               ;       s1--
                SUB      s2, 0x02               ;       s2--
                SUB      s3, 0x02               ;       s3--
                SUB      s4, 0x02               ;       s4--
                SUB      s5, 0x02               ;       s5--
                SUB      s6, 0x02               ;       s6--
                SUB      s7, 0x02               ;       s7--
                SUB      s8, 0x02               ;       s8--
                SUB      s9, 0x02               ;       s9--
                SUB      sA, 0x02               ;       sA--
                SUB      sB, 0x02               ;       sB--
                SUB      sC, 0x02               ;       sC--
                SUB      sD, 0x02               ;       sD--
                SUB      sE, 0x02               ;       sE--
                SUB      sF, 0x02               ;       sF--
                ret

;       *************************
;       Interrupt Service Routine
;       *************************
ISR:
;               load    s0,     0xAA
                call    FuncDecreAllRegister ; ISR

;               RETI      ENABLE              ; RETURNI
                RETI      DISABLE
;       *************************
;       End ISR Interrupt Handler
;       *************************

                .ORG    0x3FF
VECTOR:
                JUMP    ISR

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.