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

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

Δημοσ.

Έχω γράψει αυτόν τον κώδικα σε mips Και θελω να μου εκτυπώνει τα 5 πρώτα γράμματα από όσα δηλωθούν. Όμως δεν δουλεύει, μπορείτε να μου πείτε τι έχω κάνει λάθος;

.text
.globl __start
_start:

    li $v0, 4         
    la $a0, p        
    syscall

    li $v0, 8             
    la $a0, buffer          
    li $a1, 100            
    syscall

    li $v0, 4               
    la $a0, output         
    syscall

    la $a0, buffer        
    li $a1, 5               
    li $v0, 4               
    syscall

    li $v0, 10            
    syscall

.data

p: .asciiz "Enter a string: "
buffer: .space 100      
output: .asciiz "\nThe first five characters are: "
 

Δημοσ.

Όχι δεν βγάζει κάποιο λάθος αλλά απλά εκτυπώνει όλα τα γράμματα εισάγω πχ το abcdefghij και εκτυπώνει πάλι αυτό ενώ εγώ θέλω το abcde μόνο

Δημοσ.

Δε γνωρίζω assembly MIPS αλλά νομίζω το πρόβλημα βρίσκεται στο ότι δεν έχεις βάλει το NULL (chr 0) στην έκτη θέση μνήμης του buffer. Το system call 4 περιμένει null terminated string, εσύ περνάς παράμετρο 5 για το μήκος αλλά δε νομίζω ότι δουλεύει έτσι. Χρησιμοποίησε εντολή για να αντικαταστήσει τη θέση μνήμης buffer + 5 με 0.

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

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

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

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

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

Σύνδεση

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

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