使用用户输入整数作为地址的MIPS

时间:2019-05-03 14:04:46

标签: mips mars-simulator

我的任务是创建一个程序,在该程序中输入两个数组,并将所有元素的总和存储在用户必须输入的地址中。

例如。

65888192 3 1 2 3 4 5 6
第一个数字是第三个数组的地址
第二个数字是数组大小
1 2 3是第一个数组的三个元素
4 5 6是第二个数组的三个元素

当我在.data中分配数组时,它可以完美地工作, 但要创建一种表单用户输入,我不知道如何。

.data
    v1Array:    .space 80
    v2Array:    .space 80
    blank:      .asciiz " "
.text
    j main
    calc: # calculate the sum of each array element i skaleren proizvod
    add $t1,$zero,$zero #indeks i
    add $t2,$zero,$zero #indeks za element od nizata
    add $t5,$zero,$zero #pocetna za suma
    add $t9,$zero,$t8 #zamena da ne se izgubi vrednosta
    whilecalc:
    beq $t1,$t0,exit
    lw $s3,v1Array($t2)
    lw $s2,v2Array($t2)
    add $t3,$s3,$s2
    mult $s2,$s3
    mflo $s4
    add $t5,$s4,$t5
    lw $t3,6($t9)
    addi $t1,$t1,1
    addi $t2,$t2,4
    addi $t9,$t9,4
    j whilecalc
    exit:
    jr $ra



    main: 
    li $v0,5
    syscall
    add $t8,$zero,$v0 #memoriska lokacija

    li $v0,5
    syscall
    add $t0,$zero,$v0   #broj na elementi vo nizata - n

    add $t1,$zero,$zero #indeks i
    add $t2,$zero,$zero #indeks za element od nizata

    whilev1:
    beq $t1,$t0,inv2 # if i = t0/n jump to insert v2
    li $v0,5
    syscall
    add $t4,$zero,$v0
    sw $t4,v1Array($t2)
    addi $t1,$t1,1
    addi $t2,$t2,4
    j whilev1

    inv2:
    add $t1,$zero,$zero #indeks i
    add $t2,$zero,$zero #indeks za element od nizata

    whilev2:
    beq $t1,$t0,continue # if i = t0/n jump to calculate
    li $v0,5
    syscall
    add $t4,$zero,$v0
    sw $t4,v2Array($t2)
    addi $t1,$t1,1
    addi $t2,$t2,4
    j whilev2
    continue:

    jal calc

    print:
    add $t1,$zero,$zero #indeks i
    add $t9,$zero,$t8 #zamena da ne se izgubi vrednosta
    li $v0,1
    add $a0,$zero,$t5
    syscall
    li $v0,4
    la $t5,blank
    add $a0,$zero,$t5
    syscall

    whileP: #pecati nizata
    beq $t1,$t0,end
    lw $s3,($t9)
    li $v0,1
    add $a0,$zero,$s3
    syscall
    li $v0,4
    la $t5,blank
    add $a0,$zero,$t5
    syscall
    addi $t1,$t1,1
    addi $t9,$t9,4
    j whileP

    end:    #return 0 vo main
    li $v0,10
    syscall

0 个答案:

没有答案