2015-03-02 2 views
-1

Итак, я написал простую программу для моего класса соковой дуги в сборке MIPS. Теперь нам необходимо усилить эту программу, чтобы потребовалось два аргумента. Если аргументы совпадают, то ответ должен быть таким же, как и в исходной программе, которая принимает только один аргумент. Если они разные, вы должны выяснить, что должна делать ваша программа на основе вышеизложенного. Постарайтесь сделать как можно меньше изменений. Увеличьте программу, чтобы она могла получать два аргумента с клавиатуры и отображать результат в окне консоли SPIM. Если какой-либо из входных аргументов является отрицательным числом (меньше нуля), ваша расширенная программа должна отображать нуль в консоли.Как добавить аргумент в сборку MIPS?

Вот мой код из ун-расширенной части:

.data 
arg: .word 5 

.text 
.globl main 
main: 

la $t3, arg  
lw $t2, 0($t3) 
lw $t3, 0($t3) 

addi $t1, $zero, 0 
beqz $t2, fin   
fori: 

add $t1, $t1, $t2 
addi $t3, $t3, -1 

bnez $t3, fori  

fin: 

li $v0, 10 
syscall 
+0

Хорошо, если кто-нибудь может помочь, это будет здорово. Я знаю, как создать аргумент. Я просто делаю: arg1: .word 5 и arg2: .word 5. Но как мне получить это как ввод с клавиатуры? –

+0

https://www.doc.ic.ac.uk/lab/secondyear/spim/node8.html. – markgz

+0

mark gz Я все еще потерял, вы можете помочь найти аналогичный пример? –

ответ

0

Вот код, чтобы прочитать целое с клавиатуры и сохранить его в arg1.

 .data 
    arg1: .word 0 
     .text 
     li $v0, 5  # system call code for read int 
     syscall   # read the int 
     la $t0, arg1 
     sw $v0, 0($t0) # store the integer at location arg1 
+0

Спасибо! Итак, теперь я прочитал, как читать и писать целые числа на консоли, но я смущен тем, как добавить эту реализацию в существующую программу. Любые указатели или советы? –