Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Abbiamo potuto mettere le mani in anteprima sul nuovo monitor MSI dedicato ai giocatori: un mostro che adotta un pannello QD-OLED da 26,5 pollici con risoluzione 2560 x 1440 pixel, frequenza di aggiornamento fino a 500 Hz e tempo di risposta di 0,03 ms GtG
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI aggiorna la sua linea di droni ultraleggeri con Neo 2, un quadricottero da 160 grammi che mantiene la compattezza del predecessore ma introduce una stabilizzazione meccanica a due assi, sensori omnidirezionali e un sistema LiDAR
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-06-2006, 11:25   #1
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
HELP!: Elaborati!

Ciao ragazzi sono nuovo di qui.
Siccome la domenica di questa settimana devo consegnare gli elaborati avrei bisogno di un grande aiuto essendo in stato di malattia. Non riesco a capire cosa devo fare qui i ho studiato ma non sono capace di fare il diagramma di flusso. C'è qualcuno che mi può aiutare. Non copio per passare così ma per impare che poi in futuro se mi ricapiterà un problema simile saprò cosa fare. Mi potresta aiutare? Grazie

ELABORATO 1

Devo creare un programma che sostituisce tutte le occorrenze di una sottostringa all'interno di una stringa. Ad esempio ("Questa stringa è una stringa","stringa";"Mela") -> Questa mela è una mela. Non so se mi avete capito.

Io ho impostato il programma così:

#include <stdio.h> //include la libreria stdio.h

void main()
{
//La stringa da modificare
char stringa[1024] = "Questa stringa e' una strina";
char str1[] = "stringa";
char str2[] = "mela";

__asm
{
che blocco devo implementare in assembler
}

printf("Nuova stringa: %s\n";stringa);

}

So benissimo che esistono i comandi di manipolazione della stringa e che sono:

LODS - leggi stringa
STOS - scrivi stringa
MOVS - copia stringa
CMPS - confronta due stringhe
SCAS - esamina stringa

Cosa devo fare?
Grazie per la vostra futura collaborazione.
Cordialissimi saluti a tutti voi programmatori
Cristian Capannini
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 20:01   #2
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
Credo che....

Ciao a tutti, spero che riusciate a risolvere questo problema.....vi ringrazierò un casino. Riesco adesso solo a studiare ce l'ho Lunedì prox l'esame quindi se potete risolvermelo entro giovedì se potete o max venerdì. Grazie a tutti. Ci tengo molto a passare questo esame e vorrei cortesemente essere aiutato.
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 21:36   #3
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da LOVE85
Cosa devo fare?
Scusa ... alcune domande: ma ti è stato richiesto espressamente di effettuare la ricerca/sostituzione interamente in assembly??? E in tal caso su quale S.O. deve girare e quale compilatore devi usare??? Nota che l'assembly in-line può differire da compilatore a compilatore come sintassi.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2006, 00:00   #4
Futuregames
Senior Member
 
Iscritto dal: Mar 2005
Messaggi: 349
devi stare attento se modifichi qualcosa nei registri non ti ritrovi la stessa cosa dopo...

le variabili possono essere memorizzate pure su alcuni registri quindi io ti consiglio di "salvare il contesto" cioè di mettere il contenuto di tutti i registri principali nello stack:

push(AX);
push(BX);
ecc...

poi alla fine delle tue robe in assembly

fai i pop... (al contrario di come li hai messi cioè prima bx poi ax) cmq guarda le documetazioni in giro io nn mi ricordo + bene il tutto

infine fai il print
Futuregames è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2006, 09:04   #5
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
Ehmm...

Ehm grazie comunque però come lo impostereste voi?
Vi dico che sto lavorando con Visual Studio C++ 6.0.
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2006, 09:10   #6
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
Ehm....

Su xp e con visual studio 6.0 c++. Cioè il programma quando lo esequi deve cambiare solo la sottostringa "Stringa" con "mela" uitilizzando i registri.
Bisogna convertire la parola? O bisogna fare il CMP fino a che non trova la parola stringa se si sostituisci e vai avanti a cercare anche la seconda sottostringa uguale alla prima se no cerca finchè la ogni sotto stringa non sia la parola "stringa" una volta sostituisce le due sottostringhe con "mela".
Come si fa?
PS: Bisogna che lo consegno domenica perchè se no non posso andare all'esame e ci tengo tanto.
Grazie
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 10:03   #7
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
grazie.....

ehm vi ringrazio della vostra collaborazione........
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 10:15   #8
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Guarda ... cerco io di aiutarti (per quello che posso, ovviamente).
Il mio primo dubbio è questo: nell'array stringa se devi sostituire "stringa" con "mela" in pratica accorci la stringa. Devi per forza operare su un solo array o puoi usare un array "di output"???
Allungare/accorciare una stringa non è proprio molto comodo!!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 16:13   #9
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
ehm grazie micetto (scusa te ti chiamo così)

Ehm ho visto questa cosa a fianco:

Input: la stringa in cui effettuare la sostituzione, la stringa da cercare e quella con cui sostituirla (Tutti array di BYTE terminanti con 0)

Output: la stessa stringa modificata


N.B: LA STRINGA MODIFICATA DEVE ESSERE TERMINATA DA UN CARATTERE NULLO (BYTE 0) ESATTAMENTE COME LE STIRNGHE DI INPUT.

SI SUPPONGA CHE IL BUFFER DI MEMOORIA CUI CORRISPONDE LA STRINGA DA MODIFICARE SIA SEMPRE SUFFICIEMENTE AMPIO PER IL RISULTATO.

PS. Vuoi che ti invio il testo degli elaborati da fare entro se è possibile sabato....se è possibile...solo il 2° no perchè l'ho fatto perchè mi sembrava il più facile tra quegli altri due. Potreste aiutarmi? Grazie della tua attenzione micetto (scusa se ti chiamo così perchè ho visto l'avatar del gattino che è il mio animale preferito! e ne ho 12 in casa mia identici al tuo avatar 7 li ho chiamati come i 7 nani e gli altri 3 come i tre re magi <= CHE IDIOTA CHE SONO NON E' VERO?). Comuqneu ti ringrazioerò e non so come del tuo aiuto. Il secondo è stato più facile perchè ho fatto già un'esercizio precedente. Ah giusto quello della parità dei dispari o parità pari e quello della ricerca della sotto stringa sono simili a due elaborati che ho fatto ma non sono in grado di estenderli se te li invio e mi dai una mano, che ne dici? Grazie
Cordialissimissimissimi saluti al micetto (se è possibile vorrei sapere il suo nome, io mi chiamo Cristian)
Ciao Ciao
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 16:43   #10
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
ricerca carattere di una stringa esempio

/********************************************************************************
* *
* Architetture dei sistemi di Elaborazione *
* *
********************************************************************************

Esercizio: 003
Descrizione: Ricerca di un carattere in una stringa

********************************************************************************/
questo come dice il titolo fa una ricerca del carattere di una stringa

#include <stdio.h>


void main()
{
// Variabili
char Stringa[] = "Questa è una stringa";
int Lunghezza = sizeof(Stringa)-1;
char Carattere = 'è';
int Posizione;


// Blocco assembler
__asm {
MOV DL,Carattere ; Carattere da cercare in DL
MOV ECX,Lunghezza; Numero di caratteri
XOR EBX,EBX ; Azzera EBX
Ciclo: CMP EBX,ECX ; Ho superato la lunghezza ?
JGE NonTr
MOV AL,Stringa[EBX] ; Copia in AL il carattere EBX-esimo
CMP AL,DL ; Confronta i caratteri
JE Fine ; Trovato!
INC EBX ; Passa al carattere successivo
JMP Ciclo
NonTr: MOV EBX,-1 ; Carattere non trovato
Fine: MOV Posizione,EBX ; Trovato in posizione EBX
}


// Stampa su video
printf("Posizione=%d\n",Posizione);
}
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 16:49   #11
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
e l'altro elaborato non è simile a questo?

/********************************************************************************
* *
* Architetture dei sistemi di Elaborazione *
* *
********************************************************************************

Esercizio: 006b
Descrizione: Calcolare la parità di un vettore di byte (Seconda Versione)

********************************************************************************/

#include <stdio.h>


void main()
{
// Variabili
unsigned char Vettore[] = {3,7,3,7,5,1,4};
unsigned int Lung = sizeof(Vettore)/sizeof(Vettore[0]);
int Ris; // 0: parità pari, 1: parità dispari


// Blocco assembler
__asm {
MOV ECX,Lung ; Lunghezza del vettore in ECX
XOR EDX,EDX ; Azzera EDX
Ciclo: XOR DL,Vettore[ECX-1] ;
LOOP Ciclo ; Continua finchè ECX è 0
TEST DL,DL; Il byte in DL ha la stessa parità dell'intera stringa
LAHF ; Carica i flag in AH
NOT AH ; Il flag di parità è 1 se la parità è pari: lo inverto
SHR EAX,10 ; Sposto il flag di parità sul primo bit di EAX
AND EAX,1 ; Mantengo solo il primo bit
MOV Ris,EAX ; Ris è 1 se il numero di bit a uno è dispari, 0
altrimenti

}


// Stampa su video
printf("Ris=%d\n",Ris);
}

e questo potrebbe aiutarmi a risolvere l'altro elaborato?
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 17:39   #12
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Posso darti come "input" questo codice:
Codice:
#include <stdio.h>

int main (void)
{
    char stringa[1024] = "Questa stringa e' una stringa";
    char str1[] = "stringa";
    char str2[] = "mela";

    __asm
    {
            lea     esi,stringa
            lea     edi,str1
            call    compara_str

            jmp     end_asm
           

        /* INPUT:
         *   esi = puntatore alla stringa 1
         *   edi = puntatore alla stringa 2
         * OUTPUT:
         *   Z = 1  (stringhe uguali)
         *   Z = 0  (stringhe diverse)
         */
        compara_str:
            push    esi
            push    edi
        compara_str_loop1:
            mov     al,[esi]
            cmp     al,[edi]
            jne     compara_str_end
            cmp     al,0
            je      compara_str_end
            inc     esi
            inc     edi
            jmp     compara_str_loop1
        compara_str_end:
            pop     edi
            pop     esi
            ret

        end_asm:
    }

    return 0;
}
È solo un esempio, comunque.
La sub-routine compara_str si occupa di verificare se 2 stringhe sono esattamente uguali oppure no.
A quel punto, tenendo edi che punta a str1, bisogna partire dal primo carattere di stringa e andare avanti per cercare se ad un certo punto si trova la stringa in str1.

L'unica cosa è che da "stringa" a "mela" accorci e non crea troppi problemi ma se la stringa da sostituire fosse più lunga, sarebbe più un casino. Credo che ti convenga usare un buffer temporaneo, se ti è possibile (cioè se ti va bene).


P.S.: poi comunque prova a "buttare" giù qualcosa tu.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 18:21   #13
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
adesso lo provo ti ringrazio che cosa e quanto ti devo? Te lo dico senza scherzare. Dimmi quanto ti devo e però pensavo con cosa sdebitarmi? Ti mando un mega complimenti per il tuo aiuto...e l'altro hai provato a darci un'occhiata....grazie grazie grazie e ehm giuuuuso che cos'è il buffer temporaneo che non ho capito bene a cosa servi?
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 18:42   #14
-Ivan-
Senior Member
 
L'Avatar di -Ivan-
 
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1843
Quote:
Originariamente inviato da LOVE85
Ciao ragazzi sono nuovo di qui.
Siccome la domenica di questa settimana devo consegnare gli elaborati avrei bisogno di un grande aiuto essendo in stato di malattia. Non riesco a capire cosa devo fare qui i ho studiato ma non sono capace di fare il diagramma di flusso. C'è qualcuno che mi può aiutare. Non copio per passare così ma per impare che poi in futuro se mi ricapiterà un problema simile saprò cosa fare. Mi potresta aiutare? Grazie

ELABORATO 1

Devo creare un programma che sostituisce tutte le occorrenze di una sottostringa all'interno di una stringa. Ad esempio ("Questa stringa è una stringa","stringa";"Mela") -> Questa mela è una mela. Non so se mi avete capito.

Io ho impostato il programma così:

#include <stdio.h> //include la libreria stdio.h

void main()
{
//La stringa da modificare
char stringa[1024] = "Questa stringa e' una strina";
char str1[] = "stringa";
char str2[] = "mela";

__asm
{
che blocco devo implementare in assembler
}

printf("Nuova stringa: %s\n";stringa);

}

So benissimo che esistono i comandi di manipolazione della stringa e che sono:

LODS - leggi stringa
STOS - scrivi stringa
MOVS - copia stringa
CMPS - confronta due stringhe
SCAS - esamina stringa

Cosa devo fare?
Grazie per la vostra futura collaborazione.
Cordialissimi saluti a tutti voi programmatori
Cristian Capannini

Fai scienze dell'informazione a cesena per caso?
Anche io devo consegnare questi elaborati.
-Ivan- è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 19:01   #15
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
Ehm....

Ehm si ma non copiare ok? . Chi sei?
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 19:18   #16
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da LOVE85
adesso lo provo ti ringrazio che cosa e quanto ti devo? Te lo dico senza scherzare. Dimmi quanto ti devo e però pensavo con cosa sdebitarmi? Ti mando un mega complimenti per il tuo aiuto...e l'altro hai provato a darci un'occhiata....grazie grazie grazie e ehm giuuuuso che cos'è il buffer temporaneo che non ho capito bene a cosa servi?
Chiedo veramente scusa! Ho fatto un "piccolo" errore: la sub-routine compara_str non è proprio quello che serve. È giusta di per se .... ma non va bene per il tipo di test che devi fare tu!! Quando l'ho scritta chissà perché stavo pensando alla funzione strcmp() del "C".

Adesso non ho molto tempo, appena ho un attimo domani la riscrivo bene bene.
Sorry.

P.S. per buffer temporaneo intendevo una cosa del genere:
Codice:
char stringa[200] = "Questa stringa e' una stringa";
char buffer[200];
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 22:16   #17
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
Oups...

non ti preoccupare capita ( errare è umano! ) vada tranquillo a me serve entro la consegna e cioè domenica questa se è possibile che così almeno posso passare l'esame. Se non stessi male così tanto oggi ho 38 di febbre ma studio comunque dannata febbre! Lei non sa quanto ci tengo....o forse sì.... E poi se lei può provare per quell'altro ? Grazie dopo mi direte voi come sdebitarmi ....

Ultima modifica di LOVE85 : 21-06-2006 alle 22:23.
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 07:39   #18
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
ehm

Ciao AndBin ti consiglio prima di postarlo di mandarlo o nella mia email: [email protected] ho nel mex privato grazie perchè quel ragazzo copia da tutti.
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 12:29   #19
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Posso postare questo codice che è solo una parte del codice che ho messo giù io.
Ovviamente devi completarlo tu!

Codice:
#include <stdio.h>

int main (void)
{
    char stringa[200] = "Questa stringa e' una stringa";
    char output[200];
    char str1[] = "stringa";
    char str2[] = "mela";

    __asm
    {
            /*
            .... tuo codice ....
            */
            jmp     end_asm


        /* INPUT:
         *   esi = puntatore alla stringa
         * OUTPUT:
         *   eax = lunghezza
         */
        calcola_lunghezza:
            push    esi
            xor     eax, eax
        calcola_lunghezza_loop:
            cmp     [BYTE PTR esi],0
            je      calcola_lunghezza_end
            inc     eax
            inc     esi
            jmp     calcola_lunghezza_loop
        calcola_lunghezza_end:
            pop     esi
            ret

        /* INPUT:
         *   esi = puntatore alla stringa 1
         *   edi = puntatore alla stringa 2
         *   ecx = lunghezza
         * OUTPUT:
         *   Z = 1  (stringhe uguali)
         *   Z = 0  (stringhe diverse)
         */
        compara_str:
            push    ecx
            push    esi
            push    edi
            cld
            repz    cmpsb
            pop     edi
            pop     esi
            pop     ecx
            ret

        end_asm:
    }

    printf ("Nuova stringa: %s\n", output);

    return 0;
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 13:32   #20
-Ivan-
Senior Member
 
L'Avatar di -Ivan-
 
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1843
Quote:
Originariamente inviato da LOVE85
Ciao AndBin ti consiglio prima di postarlo di mandarlo o nella mia email: [email protected] ho nel mex privato grazie perchè quel ragazzo copia da tutti.
Sarei io che copio da tutti?
Non so come tu faccia a saperlo visto che non sai nemmeno chi sono.
Se avessi letto un po' in giro comunque avresti visto che c'è un mio 3d dove chiedo consigli su alcune istruzioni perchè li sto facendo e non sto chiedendo a qualcun altro su internet di farmeli.
-Ivan- è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
L'IA "seria" di Appian è diversa: inserita nei processi e rispetta dati e persone L'IA "seria" di Appian è divers...
Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
CD Projekt conferma che l'uscita dei tit...
Black Friday Amazon: accessori auto e av...
Addio al notch anche su iPhone 17e: ecco...
Ultimo giorno di Black Friday: GPU, CPU,...
Ultimo giorno di Black Friday: super sco...
In piena transizione elettrica, Lotus ag...
Ultimo giorno di Black Friday: robot asp...
Il Natale segna l'ingresso di Geely in I...
Acqua dal nulla in pochi minuti: il sorp...
Ultimo giorno di Black Friday: tado° e N...
La Germania si oppone al ban dei motori ...
Aggiornamento Airbus A320, a che punto s...
Ultimo giorno di Black Friday: portatili...
Splinter Cell Remake, svolta decisiva? D...
Ultimo giorno di Black Friday Amazon: su...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:29.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v