Saya baru mengenal MIPS dan saya mulai sedikit putus asa, ini adalah tugas pertama saya dan saya sudah merasa mandek. Sepertinya saya tidak dapat menemukan masalahnya.

.data
    myArray: .space 40
.text
    #For later to check if the number is even 
    addi $s2, $zero, 2

    #values for the array
    addi $t0, $zero, 1
    addi $t1, $zero, 2
    addi $t2, $zero, 3
    addi $t3, $zero, 4
    addi $t4, $zero, 5
    addi $t5, $zero, 6
    addi $t6, $zero, 7
    addi $t7, $zero, 8
    addi $t8, $zero, 9
    addi $t9, $zero, 10

    #initial index
    addi $s1, $zero, 0

    #putting the values in an array
    sw $t0, myArray($s1)
        addi $s1, $s1, 4
    sw $t1, myArray($s1)
        addi $s1, $s1, 4
    sw $t2, myArray($s1)
        addi $s1, $s1, 4
    sw $t3, myArray($s1)
        addi $s1, $s1, 4
    sw $t4, myArray($s1)
        addi $s1, $s1, 4
    sw $t5, myArray($s1)
        addi $s1, $s1, 4
    sw $t6, myArray($s1)
        addi $s1, $s1, 4
    sw $t7, myArray($s1)
        addi $s1, $s1, 4
    sw $t8, myArray($s1)
        addi $s1, $s1, 4
    sw $t9, myArray($s1)
        addi $s1, $s1, 4

    #cleaning
    addi $s1, $zero, 0
    addi $s0, $zero, 0

    loop:
        beq $s1, 40, exit
        addi $s1, $s1, 4


        lw $s3, myArray($s1)



        div $s3, $s2
        mfhi $s4

        beqz $s4, true


        j loop
    true:
        add $s0, $s0, $s3
        j loop
    exit:
        move $a0, $s0
        syscall

Saya akan sangat menghargai mendapatkan bantuan untuk masalah ini, juga beberapa saran untuk lebih memahami mips dan sumber untuk belajar. Terima kasih sebelumnya.

0
Mark 21 Maret 2019, 14:48

1 menjawab

Jawaban Terbaik

Anda tidak mengatakan apa 'masalah' itu.

Adakah alasan Anda tidak memulai dengan array yang sudah memiliki data di dalamnya?

myArray:  .word 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Anda perlu mengatur label utama

  .text
  .globl main

 main:

  # the code

Untuk loop untuk memeriksa apakah itu genap:

loop:
    beq $s1, 40, exit
    addi $s1, $s1, 4

Ini akan menambah s1 sebesar 4 sebelum Anda menggunakannya, jadi Anda tidak mendapatkan nilai pertama. jadi perlu memindahkan bagian tambahkan ke setelah di mana Anda mendapatkan nilai array saat ini.

Untuk memeriksa apakah itu genap, atau dapat melakukan an dan dari nilai bit bawah - jika disetel ganjil, jika tidak, peristiwanya

Begitu

div $s3, $s2
mfhi $s4

Dapat diubah menjadi

and $s4, $s3, 
1
lostbard 21 Maret 2019, 14:18