Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    20

    [C++/ASM] Confronto aree triangoli C++/ASM

    Confronto di 2 aree di rettangoli con dichiarazione delle variabili in c.
    A parte il fatto che il codice non è ottimizzato, non funziona correttamente e non capisco il perchè!?
    codice:
    #include <iostream>using namespace std;
    
    
    void main()
    {
    short int a1=0;
    short int b1=0;
    short int a2=0;
    short int b2=0;
    short int area1=0;
    short int area2=0;
    short int temp1;
    short int temp2;
    cout<<"Inserisci l'altezza del primo triangolo"<<endl;
    cin>>a1;
    cout<<"Inserisci la base del primo triangolo"<<endl;
    cin>>b1;
    cout<<"Inserisci l'altezza del secondo triangolo"<<endl;
    cin>>a2;
    cout<<"Inserisci la base del secondo triangolo"<<endl;
    cin>>b2;
    
    
    
    
    _asm
    {
        MOV AX,a1
        MUL AX;b1
        MOV BX;2
        DIV AX;BX
        MOV area1;AX
    
    
        MOV AX,a2
        MUL AX;b2
        MOV BX;2
        DIV AX;BX
        MOV area2;AX
    
    
        MOV AX;area1
        MOV BX;area2
        CMP AX;BX
    
    
                JE UGUALI
    }
    
    
    cout<<"Le due aree non sono uguali"<<endl;
    _asm
    {
    SALTA
    }
    
    
    UGUALI:
    cout<<"Le due aree sono uguali"<<endl;
    
    
        SALTA:
    system("pause");
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Magari spendi qualche parola in più su cosa dovrebbe fare esattamente il programma e cosa invece succede ...

    A parte il fatto che parli di rettangoli e di triangoli ci sono dei ; nelle istruzioni al posto di , ad esempio

    MUL AX;b1

    e non si sa cosa sia

    SALTA
    Ultima modifica di oregon; 23-12-2013 a 21:28
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    20
    Si scusa era di fretta per andare a mangiare, allora il programma prende i dati in entrata e calcola le aree dei triangoli e le confronta in assembly,il SALTA è l'etichetta che ho usato se le due aree non sono uguali ma mi sa che è di troppo e non è necessario.
    MUL AX,b1 fa la moltiplicazione tra il registro AX (che contiene l'altezza) e la variabile b1 (base) e mette in risultato in AX o mi sbaglio?
    Errore 1 error C2414: numero di operandi non valido c:\users\nuovo\documents\visual studio 2012\assemblyjump\assemblyjump\origine.cpp 27 1 assemblyjump
    questo è l'errore (Numero di operandi non valido) che si verifica nella riga 27 (MUL AX,b1)-29(DIV AX,BX)-33(MUL AX,b2)-35(DIV AX,BX)
    poi c'è
    Errore 5 error C2400: errore di sintassi dell'assembler inline in 'codice operativo'. Trovato 'newline'. c:\users\nuovo\documents\visual studio 2012\assemblyjump\assemblyjump\origine.cpp 49 1 assemblyjump
    49 ( dove c'è il "}" prima di SALTA)

    ho sostituito i ; con le , ma da' sempre gli stessi errori,in assembly sono molto impacciato (nell'ultima verifica ho preso 3,5 ma per fortuna vado bene in sistemi e reti),grazie di tutto

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Intanto i ; vanno sostituiti con , e non puoi scegliere se farlo o no ...

    Poi SALTA è necessario ma io mi riferisco a quello che hai scritto dentro la _asm che non si capisce ... ma sono sicuro correggerai ...

    Infine, cosa più importante, le MUL e le DIV sono sbagliate ... devono essere

    MUL b1

    MUL b2

    DIV BX

    Riproponi il codice corretto con gli altri eventuali errori
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    20
    Ah è vero che utilizzano sempre il registro privilegiato AX me l'ero scordato,l'ho sistemato ora va perfettamente.
    Grazie mille

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.