Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    menù in Assembly Mips 8086

    Salve a tutti, volevo fare una specie di menù dove in input venga richiesto di immettere 1 o 2 per fare determinati processi.
    Come fare?
    Quando leggo il numero inserito, come faccio a fare un blocco if ?
    PSEUDOCODICE:

    codice:
    if(risposta=1)
    jump exit
    else
    somma=somma++;
    Ringraziando anticipatamente,

    Davide

  2. #2
    codice:
    menu: .asciiz "inserisci 0, 1, 2, 3 per fare delle operazioni
    
    li $v0, 4                # 4 è il codice di print_string
        la $a0, menu        # domanda all'utente
        syscall
        
        la $a0, menu        # leggiamo la risposta data
        li $a1, 13
        li $v0, 8
        syscall
        
        li $t0, 0
        li $t1, 1
        li $t2, 2
        li $t3, 3
        beq $t0, $a0 exit 
        beq $t1, $a0 exit 
        beq $t2, $a0 exit #salta alla fine del programma
        beq $t3, $a0 inizio
    Ho fatto un menù così, ma quando vado ad inserire 0 o 1 o 2 o 3 non va più avanti ! c'è qualche problema nel beq? aiuto please !!!!

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Mi sembra che manchi una virgola prima dell'etichetta di arrivo
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Mi sembra che manchi una virgola prima dell'etichetta di arrivo
    scusa non capisco dove !!!

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    beq $t0, $a0 , exit
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    ok grazie, ma non è quella la parte che non fa andare il programma... quando clicco 3 per tornare al menù principale, non ci torna !!! :P

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Posta tutto il codice ... dove sta l'etichetta

    inizio

    ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Preticamente l'etichetta inizio consente di ripetere la domanda che viene chiesta... in questo caso:
    codice:
    sottomenu:    .asciiz "Inserisci: 
    - 0 moltiplicazione;
    - 1 differenza;
    - 2 somma;
    - 3 rifai la domanda" 
    
    inizio: li $v0, 4                # 4 è il codice di print_string
        la $a0, menu        # domanda all'utente
        syscall
        
        la $a0, menu        # leggiamo la risposta data
        li $a1, 13
        li $v0, 8
        syscall
        
        li $t0, 0
        li $t1, 1
        li $t2, 2
        li $t3, 3
        beq $t0, $a0, exit 
        beq $t1, $a0, exit 
        beq $t2, $a0, exit #salta alla fine del programma
        beq $t3, $a0, inizio
    Ovviamente le etichette che fanno saltare a exit servono solo per verificare il perchè non salta ad inizio !!!
    I registri temporali servono per confrontare il risultato ottenuto dalla domanda fatta così da saltare(prossimamente) al processo che voglio fargli fare !
    Per adesso devo solo capire il perchè non mi fa saltare ad inizio,e quindi scrivere a video il menù, quando scrivo 3 !!!
    Ultima modifica di DvdDelphi; 05-11-2013 a 23:04

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma dove sta l'etichetta inizio nel tuo programma?

    P.S. Ti avevo detto che la beq si scrive con un'altra virgola

    beq $t3, $a0, inizio
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Ho modificato il testo di prima !!! grazie !

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 © 2024 vBulletin Solutions, Inc. All rights reserved.