Mijn programma zou een geheel getal lezen en het terug naar de gebruiker printen, maar elke keer drukt het 268501230 af, ongeacht wat er wordt ingevoerd. Alle hulp wordt op prijs gesteld.
.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
Antwoord 1, autoriteit 100%
Dit is hoe ik een programma zal schrijven om een integer-invoer te krijgen en uit te printen
.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
Antwoord 2, autoriteit 67%
#reads one integer from user and saves in t0
li $v0, 5
la $t0, buffer
syscall
Zo werkt syscall 5 niet. Het gehele getal wordt geretourneerd in $v0
, dus de code zou zoiets moeten zijn als:
li $v0,5
syscall
move $t0,$v0
li $v0, 1
li $t0, 5 # $integer to print
syscall
Je gebruikt hier ook het verkeerde register. Het af te drukken gehele getal moet in $a0
gaan, niet in $t0
.
Hier is een lijst met syscalls en de registers die ze gebruiken.