Я получаю попытку выполнить не инструкцию в qtspim?

Может ли кто-нибудь помочь мне понять, что не так с моим кодом? Я пытаюсь прочитать целое число, сохранить его значение и вывести на экран/

.text

main:

li $v0, 5
la $a0, testInteger
syscall

li $v0, 4
la $a0, resultString
syscall

li $v0, 1    
la $a0, testInteger
syscall

.data

testInteger: .word 5
resultString: .ascii "The integer is :"

person Community    schedule 25.09.2014    source источник


Ответы (1)


Вам нужно сигнализировать о достижении конца вашей программы. В SPIM и его ответвлениях вы делаете это с syscall числом 10.

Поэтому, когда вы хотите, чтобы выполнение вашей программы остановилось (например, после того, как вы напечатали целое число), вы делаете:

li $v0, 10   # syscall 10 = exit    
syscall

Некоторые другие проблемы в вашем коде:

  1. syscall число 5 возвращает прочитанное целое число в $v0. Он не сохраняет его в памяти, на которую указывает $a0, как, кажется, предполагает ваш код.

  2. syscall число 1 ожидает, что значение целого числа будет напечатано в $a0. Вы помещаете адрес целого числа в $a0 (это то, что делает la).

person Michael    schedule 25.09.2014