CS-PROJECTS / c02_assembler / test / final / ftest10.asm
ftest10.asm
Raw
# Spring 2020 Full Assembler
# Test file 10
# Tests:  - comprehensive test of all instructions
#         - full-featured data segment
#         - full-line comments
#         - end-of-line comments
#
# Maximum points:  60.0

.data
x01:    .word    14324143
s01:    .asciiz  "a"
x02:    .word    -323434
s02:    .asciiz  "ab"
x03:    .word    873124
s03:    .asciiz  "abc"
x04:    .word    -1343241
s04:    .asciiz  "abcd"
arr01:  .word    23:6
s05:    .asciiz  "How did that one go?"
arr02:  .word    6, 28, 496, 8128

.text
main:
        la     $t0, arr01          # get address of first array
        lw     $t1, x01            # load value of x01
        sw     $t1, 4($t1)         # store value of x01 into arr01[1]
        lui    $t1, -1             # load 0xFFFF to top half of $t1

# Check basic R-type and I-type instructions
label1:
        add    $t4, $t2, $t3
        addi   $s0, $s0, 31214
        addu   $s1, $s1, $s2
        addiu  $s2, $s2, -31214
        mul    $s3, $s4, $s5
        mult   $s3, $s4
label2:
        mul    $t4, $t7, $t9
        nop
        nor    $t3, $t6, $t8
        sll    $s2, $s2, 31
        slt    $t3, $s2, $s3
        slti   $t3, $s2, -21497
label3:
        sra    $s0, $s1, 17
        srav   $s7, $s2, $s0
        sub    $t0, $zero, $s1

# Check some conditional branch instructions and j
        beq    $t1, $a0, label1
        blez   $t3, label2
        bgtz   $s7, label3
        bne    $s5, $zero, label2
        j      label1
# Check remaining pseudo-instructions, and syscall
label4:
        move   $t3, $s3
        blt    $t0, $t1, label4
        li     $t3, -4123
        syscall

# Load addresses of selected variables
# These check the alignment, which and therefore padding
        la     $t3, x02
        la     $t3, x03
        la     $t3, x04
        la     $t3, s05
        la     $t3, arr02