Программа MIPS! нужна помощь - я не уверен, правильно ли я это делаю - PullRequest
1 голос
/ 02 декабря 2009

Я пытаюсь написать программу 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

1 Ответ

1 голос
/ 03 декабря 2009

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

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

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

Шаг 2 - заставить его фактически выполнить

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

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

Сколько места .space дает вам, достаточно?

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

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

ПОЗЖЕ КОММЕНТАРИЙ:

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

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

...