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
2
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