guitarist2 Δημοσ. 1 Μαρτίου 2017 Δημοσ. 1 Μαρτίου 2017 Έχω μια άσκηση που ζητάει την μεγαλύτερη λέξη σε ένα αλφαριθμητικό,το οποίο χωρίζεται μόνο με κενά και ο τελευταίος χαρακτήρας του είναι το 0. Έχω κάνει το παρακάτω αλλά δεν ξέρω που έχω κάνει λάθος, θα το εκτιμούσα αν μου υποδεικνύατε τα λάθη μου . .globl main # declare the label main as global. .text main: la $a0, string # The address of the string addu $v1, $zero, $a0 # The address of longest word la $t4, maxNoOfLetters lw $t5,0($t4) la $t6, counter #lw $t7,0($t6) la $s2, space lw $s3,0($s2) #countChr: lb $t2, 0($a0) # Load the first byte from address in $t0 beq $t2, $zero, end # if $t2 == 0 then go to label end while1: bne $a0, $s3, step1 addiu $a0, $a0, 1 beq $a0, $zero, end j while1 step1: sub $v1, $v1, $v1 addu $v1,$zero,$a0 while2: bne $a0, $s3,step2 addiu $a0, $a0, 1 # else increment the address addiu $t5, $t5, 1 # and increment the counter of course beq $a0, $zero, end j while2 while3: bne $a0, $s3, step2 addiu $a0, $a0, 1 beq $a0, $zero, end j while3 step2: lw $t7, 0($t6) addiu $t7, $t7, 1 addiu $a0, $a0, 1 beq $a0, $s3, step2 slt $t9, $t5, $t7 beq $t9,$zero, skip lw $t5, 0($t7) lw $v1, 0($a0) skip: beq $a0, $zero, end j while3 #j countChr # finally loop ######################################################################## # Write your code here # NOTE: Don't print out the results! Automatic testing will get the final # value of $v1 and check if it is correct ######################################################################## end: addiu $v0, $zero, 10 # system service 10 is exit syscall # we are outta here. ############################################################################### # Data input. ############################################################################### .data string: .asciiz "small equal long atTheEnd" maxNoOfLetters: .word 0 counter: .word 0 space: .asciiz " "
Dinos_12345 Δημοσ. 1 Μαρτίου 2017 Δημοσ. 1 Μαρτίου 2017 Μπορείς να εξηγήσεις τη λειτουργία του κώδικα σου; Εγώ θα έκανα πρώτα ένα καταχωρητή σαν max, ένα σαν counter και κάθε φορά που θα έβρισκα κενό θα άλλαζα τον καταχωρητή max με την τιμή του counter αν ήταν μεγαλύτερος από τον τωρινό max και θα τον μηδένιζα. Με lb θα παίρνει έναν έναν τους χαρακτήρες και κάθε φορά θα προχωρούσα κατά ένα τον καταχωρητή που έχω το κείμενό μου
guitarist2 Δημοσ. 1 Μαρτίου 2017 Μέλος Δημοσ. 1 Μαρτίου 2017 Μπορείς να εξηγήσεις τη λειτουργία του κώδικα σου; Εγώ θα έκανα πρώτα ένα καταχωρητή σαν max, ένα σαν counter και κάθε φορά που θα έβρισκα κενό θα άλλαζα τον καταχωρητή max με την τιμή του counter αν ήταν μεγαλύτερος από τον τωρινό max και θα τον μηδένιζα. Με lb θα παίρνει έναν έναν τους χαρακτήρες και κάθε φορά θα προχωρούσα κατά ένα τον καταχωρητή που έχω το κείμενό μου Με αυτή την λογική το έκανα και εγώ περίπου, μόνο που επιπλέον πρέπει να αποθηκευτεί και η διεύθυνση του καταχωρητή που αρχίζει η μεγαλύτερη λέξη.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα