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