Получение суммы четных чисел (от 1 до 10) из массива MIPS - PullRequest
0 голосов
/ 21 марта 2019

Я новичок в MIPS, и я немного расстроен, это моя первая задача, и я уже чувствую себя застрявшим. Кажется, я не могу найти проблему.

.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

Я был бы очень признателен за помощь в решении этой проблемы, а также за несколько советов о том, как разобраться в мипах, и источниках обучения. Заранее спасибо.

1 Ответ

1 голос
/ 21 марта 2019

Вы не говорите, в чем «проблема».

Любая причина, по которой вы не начинаете с массива, в котором уже есть данные?

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

Вам нужноустановить главную метку

  .text
  .globl main

 main:

  # the code

Для цикла проверки четности:

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

Это увеличит s1 на 4 до того, как вы его используете,так что вы не получаете первое значение.поэтому необходимо переместить добавляемую часть в после , где вы получите текущее значение массива.

Для проверки, является ли оно четным, или может сделать нижний бит значений и - если установленего нечетное, иначе его событие

Так что

div $s3, $s2
mfhi $s4

можно изменить на

and $s4, $s3, 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...