Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Θέλω να γράψω ένα πρόγραμμα που θα εκτυπώνει 5 φορές τον αστερίσκο, χρησιμοποιώντας loop.

 

Κατέληξα σε αυτή τη μορφή:

.data
ast: .word '*'

.text
.globl main
main:
la    $a0, ast
add    $t0, $zero, $zero    #counter

loop:

slti    $t1, $t0, 5
beq    $t1, $zero, exit

li    $v0, 11

syscall

addiu    $t0, $t0, 1

j loop
exit:

li    $v0, 10
syscall

αλλά δεν μου επιστρέφει τίποτα.

 

Τι παίζει;

 

Τι ξέχασα;

Δημοσ.

Θέλω να γράψω ένα πρόγραμμα που θα εκτυπώνει 5 φορές τον αστερίσκο, χρησιμοποιώντας loop.

 

Κατέληξα σε αυτή τη μορφή:

.data
ast: .word '*'

.text
.globl main
main:
la    $a0, ast
add    $t0, $zero, $zero    #counter

loop:

slti    $t1, $t0, 5
beq    $t1, $zero, exit

li    $v0, 11

syscall

addiu    $t0, $t0, 1

j loop
exit:

li    $v0, 10
syscall

αλλά δεν μου επιστρέφει τίποτα.

 

Τι παίζει;

 

Τι ξέχασα;

Για char ας σου απαντήσει κάποιος που έχει ασχοληθεί παραπάνω αλλα μπορείς να το κάνεις έτσι:

.data
ast: .asciiz '*'

.text
.globl main
main:
la    $a0, ast
add    $t0, $zero, $zero    #counter

loop:

slti    $t1, $t0, 5
beq    $t1, $zero, exit

li    $v0, 4

syscall

addiu    $t0, $t0, 1

j loop
exit:

li    $v0, 10
syscall

Το οποίο δουλεύει.

Δημοσ.

Τελικά έκανα λακαμία, γιατί μπορούσα να φορτώσω τον χαρακτήρα απευθείας, χωρίς να τον δηλώσω από πρίν.

 

Έτσι δουλεύει:

.text
.globl main
main:
add    $t0, $zero, $zero    #counter

loop:

slti    $t1, $t0, 5
beq    $t1, $zero, exit

li    $v0, 11
la    $a0, '*'
syscall

addiu    $t0, $t0, 1

j loop
exit:

li    $v0, 10
syscall
  • Like 1
Δημοσ.

li χρησιμοποιήσε. Όχι la.

 

Θα δουλέψει όπως κι έγινε, αλλά δες για ποιο λόγο χρησιμοποιείται η la στα manuals και γιατί τυχαίνει και δουλεύει.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...