Een geheel getal lezen en afdrukken in mips

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 $a0gaan, niet in $t0.

Hier is een lijst met syscalls en de registers die ze gebruiken.

Other episodes