Программа MIPS! нужна помощь- я не уверен, правильно ли я делаю

Я пытаюсь написать программу MIPS, которая будет проверять набор из десяти однозначных чисел (положительных, нулевых или отрицательных), которые могут быть введены с терминала. После проверки чисел на терминал необходимо вывести только отрицательные числа (с соответствующим знаком) и их количество.

НИЖЕ МОЯ ПРОГРАММА MIPS

        .data
prompt: .asciiz "Input Score: "
        .align 2
HR_Neg:        .asciiz "\n negative Scores: "
        .align 2
HR_Pos:        .asciiz "\n positive Scores: "
        .align 2
HR_Negsc:        .asciiz "\n Number of Negative Scores: "
        .align 2
HR_Posc: .asciiz "\n Number of positive Scores: "
        .align 2
HR_coma: .asciiz ", "
        .align 2
HR_brk:         .asciiz "\n\n"
        .align 2
NEg:        .space 10
        .align 2
Pos:        .space 10
        .align 2

        .globl main
        .text
main:
        li $t0, 0
        la $t1, Neg
        li $t2, 0
        la $t3, pos
        li $t4, 0
        li $t5, 0
        li $t6, 0

loop:
        li $v0, 4
        la $a0, prompt
        syscall

        li $v0, 5
        syscall

        bltu $v0, 50, else
        sw $v0, 0($t1)
        addi $t1, $t1, 4
        addi $t0, $t0, 1
        b l_end

else:
        sw $v0, 0($t3)
        addi $t3, $t3, 4
        addi $t2, $t2, 1

l_end:
        addi $t4, $t4, 1
        bltu $t4, 15, loop

#output counts
        li $v0, 4
        la $a0, HR_negc
        syscall

        la $v0, 1
        add $a0, $t0, 0
        syscall

        li $v0, 4
        la $a0, HR_posc
        syscall

        la $v0, 1
        add $a0, $t2, 0
        syscall

#output neg scores
        li $v0, 4
        la $a0, HR_neg
        syscall

        la $t1, Neg
        lw $a0, 0($t1)
        li $v0, 1

person kingcross9999999    schedule 02.12.2009    source источник
comment
...В чем проблема? Это работает? Дает ли это ожидаемый результат? Если нет, что происходит? Какое сообщение об ошибке выводится? Какой тестовый пример вы запускаете, который не дает ожидаемого результата?   -  person FrustratedWithFormsDesigner    schedule 02.12.2009
comment
Я изучил MIPS для курса в колледже, удивительно, как мало я помню   -  person Irwin M. Fletcher    schedule 02.12.2009
comment
Нет, это не сработало. И похоже, что я что-то делаю не так. Мне нужно, чтобы кто-нибудь посмотрел на это и сообщил, что не так с моей программой ...   -  person kingcross9999999    schedule 02.12.2009


Ответы (1)


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

Кроме того, в приведенном выше коде есть опечатка в том, что у вас есть метка HR_Negsc и ссылка на HR_negc, что заставляет меня думать, что когда вы говорите «он не запускался», вы на самом деле имели в виду, что он не мог работать, потому что он не связывал !

Шаг 1. Добавьте несколько комментариев, особенно в отношении системных вызовов.

Шаг 2 - Заставьте его выполнить

Шаг 3 - Теперь вы можете начать отладку

Есть несколько областей, на которые вы могли бы обратить внимание:

Сколько места вам дает .space? Достаточно ли этого?

Правильна ли инструкция bltu, которую вы используете для оценки + ve и -ve?

Как заканчивается ваша программа - похоже, чего-то не хватает?

ПОСЛЕДНИЙ КОММЕНТАРИЙ:

Привет, из описания проблемы один из ваших предыдущих вопросов Я подозреваю, что часть кода, который вы написали тогда, сохранилась в этом проекте. Я имею в виду числа 15 и 50.

Знаете, очень сложно оказать полезную помощь, когда нужно угадывать, сколько вы знаете и чего не знаете. Чем детальнее вопрос, тем точнее может быть ответ. И некоторые советы в ответ на этот другой вопрос, очевидно, все еще применимы.

person Tony van der Peet    schedule 03.12.2009