el_33 Δημοσ. 26 Μαϊου Δημοσ. 26 Μαϊου Έχω γράψει αυτόν τον κώδικα σε 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: "
hawkpilot Δημοσ. 26 Μαϊου Δημοσ. 26 Μαϊου Σου βγάζει κάποιο μήνυμα λάθους? Δώσε περισσότερες λεπτομέρειες.
el_33 Δημοσ. 26 Μαϊου Μέλος Δημοσ. 26 Μαϊου Όχι δεν βγάζει κάποιο λάθος αλλά απλά εκτυπώνει όλα τα γράμματα εισάγω πχ το abcdefghij και εκτυπώνει πάλι αυτό ενώ εγώ θέλω το abcde μόνο
hawkpilot Δημοσ. 26 Μαϊου Δημοσ. 26 Μαϊου Δε γνωρίζω assembly MIPS αλλά νομίζω το πρόβλημα βρίσκεται στο ότι δεν έχεις βάλει το NULL (chr 0) στην έκτη θέση μνήμης του buffer. Το system call 4 περιμένει null terminated string, εσύ περνάς παράμετρο 5 για το μήκος αλλά δε νομίζω ότι δουλεύει έτσι. Χρησιμοποίησε εντολή για να αντικαταστήσει τη θέση μνήμης buffer + 5 με 0.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα