vt-cs-projects / c02_assembler / test / milestone2 / m2test05.asm
m2test05.asm
Raw
# Spring 2020 Milestone 2
# Test file 5
# Thorough test of handling labels and conditional branch instructions
# Tests:  - add, addi, beq, bne, la, lw, mul, mult, nor, syscall
#         - integer values in data segment
# Maximum score: 31.0

.data
A:  .word  -32768
B:  .word    -255
C:  .word     255
D:  .word   32767

.text
        la   $s0, A
        lw   $s1, 0($s0)
        la   $s0, B
        lw   $s2, 0($s0)
        la   $s0, C

Aberdeen:
        beq  $s1, $s2, Skye
        add  $s1, $s1, $s3
        beq  $s1, $s2, Culloden
        nor  $s1, $s3, $s1
        bne  $s1, $s3, Stirling
        add  $s1, $s1, $s3
        mult $s1, $s3
        beq  $s1, $s2, Aberdeen

Skye:
        mul  $s2, $s2, $s4
        bne  $s2, $s4, Craig
        addi $s2, $s2, 1023
        beq  $s1, $s2, Aberdeen

Stirling:
        bne  $s2, $s3, Aberdeen

Craig:
        add  $s3, $s4, $s1
        mult $s3, $s3
        beq  $s3, $s2, Skye
        beq  $s3, $s1, Culloden
        beq  $s3, $s4, Craig
        beq  $zero, $zero, Aberdeen

Culloden:
        addi $v0, $zero, 10
        syscall