Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892

    Assembly MIPS e conversione stringhe

    Ciao a tutti, devo fare un programma assembly che letta una stringa da input trasformi le lettere MINUSCOLE in MAIUSCOLE!
    Mi potete dare una mano? Ho giā fatto il codice ma mi stampa la stringa originale !

    .data
    Benvenuto: .asciiz " Benvenuto nel programma!\n\n"
    inserire : .asciiz " Inserisci una stringa: "
    risultato: .asciiz " La stringa convertita č: "
    buffer : .space 256

    .text

    uppercase:
    addi $t2,$zero,4
    add $s0,$a0,$zero
    addi $sp, $sp, -4
    sw $s0, 0($sp)
    addi $t0,$zero,97
    slt $t1,$s0,$t0
    beq $t1,$zero, upper
    slt $t4,$t2,$a1
    beq $t4,$zero,esci
    add $t2,$t2,$t2
    lw $s0, 0($sp)
    addi $sp, $sp, 4
    j uppercase


    upper:
    li $t3, 32
    sub $s0,$s0,$t3
    jr $ra

    main:
    li $v0,4
    la $a0,Benvenuto
    syscall #stampa la stringa di benvenuto
    li $v0,4
    la $a0,inserire
    syscall
    li $v0,8
    la $a0,buffer
    li $a1,256
    syscall #inserisco la stringa
    jal uppercase

    esci:
    li $v0,4
    la $a0,risultato
    syscall
    li $v0,4
    la $a0,buffer
    syscall
    li $v0,10 #esci dal programma
    syscall


    Grazie mille in anticipo!
    Debian Sarge 3.01a
    Slackware 10.2

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    ho trovato diversi errori
    codice:
    uppercase:
    addi $t2,$zero,4
    add $s0,$a0,$zero
    addi $sp, $sp, -4
    sw $s0, 0($sp)
    qua perdi il contenuto di %s0
    devi prima salvarlo in $sp
    codice:
    slt $t1,$s0,$t0
    č sbagliato
    prima fai un lw in un registro temp del primo carattere in $s0 e poi lo confronti con 97
    se fai delle chiamate a procedure come upper devi passare i parametri con $a0 - $a3 e ritornare il risultato in $v0 - $v1

  3. #3
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    non riesco a risolvere il 2 errore che mi hai detto!
    potresti aiutarmi ancora!

    grazie, molto gentile!
    Debian Sarge 3.01a
    Slackware 10.2

  4. #4
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    quindi in uppercase potrei lavorare solo con $a0 giusto e con i temporanei $s0....$s9?
    Debian Sarge 3.01a
    Slackware 10.2

  5. #5
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    uppino
    Debian Sarge 3.01a
    Slackware 10.2

  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    i registri $s0 - $s9 se vuoi usarli DEVI sempre salvare il valore precedente in $sp
    i $t0 - $t9 puoi farne quello che vuoi

  7. #7
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    si ho capito....ma non riesco a risolvere il problema...non mi stampa la nuova stringa modificata!

    č solo per i registri (cioč 2° errore)?
    Debian Sarge 3.01a
    Slackware 10.2

  8. #8
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    $a0 contiene l'indirizzo della stringa
    dunque fai
    lw $t0, 0($a0)
    in modo da leggere il primo carattere ($t0) e poi lo upperizzi

  9. #9
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    upperizzi? intendi dire che lo trasformo in maiuscola!
    Debian Sarge 3.01a
    Slackware 10.2

  10. #10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.