Leitura e impressão de um número inteiro em mips

o meu programa é suposto ler um inteiro e imprimi-lo de volta ao utilizador, mas sempre que imprime apenas 268501230, independentemente do que é inserido. Qualquer ajuda seria apreciada.

.data
prompt2: .asciiz "Please enter value: "
array1: .space 40
array2: .space 40
buffer: .space 4
.text

main: 

#Prints the prompt2 string
li $v0, 4
la $a0, prompt2 
syscall 

#reads one integer from user and saves in t0
li $v0, 5
la $t0, buffer
syscall

li $v0, 1       
li $t0, 5       # $integer to print
syscall         

exitProgram:    li $v0, 10  # system call to
    syscall         # terminate program
Author: user2837034, 2013-11-03

2 answers

#reads one integer from user and saves in t0
li $v0, 5
la $t0, buffer
syscall
Não é assim que o syscall 5 funciona. O inteiro é devolvido em $v0, então o código deve ser algo como:
li $v0,5
syscall
move $t0,$v0

li $v0, 1       
li $t0, 5       # $integer to print
syscall 
Também estás a usar o registo errado. O número inteiro a imprimir deve ir para $a0, não para $t0.

Aqui está uma lista de syscalls e os registos que eles usam.

 5
Author: Michael, 2013-11-03 08:43:07

É assim que vou escrever um programa para obter uma entrada inteira e imprimi-la

.data

     text:  .asciiz "Enter a number: "

.text

 main:
    # Printing out the text
    li $v0, 4
    la $a0, text
    syscall

    # Getting user input
    li $v0, 5
    syscall

    # Moving the integer input to another register
    move $t0, $v0

    # Printing out the number
    li $v0, 1
    move $a0, $t0
    syscall

    # End Program
    li $v0, 10
    syscall
 3
Author: aspire29, 2016-12-24 01:11:14