Assembler: 2 esercizi da fare in asm

Messaggioda CrisLoveStefy » 22/06/2006, 18:02

Ciao ragazzi sono uno studente ma che frequento il fuoricorso ho bisogno di una grandissimo aiuto! Per favore vi chiedo di aiutarmi l'esame si avvicina e il mio cervello ha consumato tutte le risorse possibili per fare questi 3 elaborati! Devo consegnare 3 elaborati di cui 1 l'ho fatto perchè mi è sembrato semplice. Mi potreste aiutare entro Domenica SE è possibile?
Grazie
ELABORATO 1

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

HO TROVATO QUESTO MA NON RIESCO AD ESTENDERLO PER L'APPOSITO ESERCIZIO CHE DEVO FARE

#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);
}

ELABORATO 2

Data una sequenza di bit, sapendo che ogni n bit(di dati) vi è un bit di parità (1 se il numero di bit a 1 fra i precedenti n è dispai-9, verificare se vi sono errori.

#include <stdio.h>

void main()
{
unsigned char vet[] = {2,4,67,2,2,58,99}; //sequenza di bit
unsigned int len = 55; // lunghezza numero di bit
unsigned char n=4 // numero di bit dati
unsigned char errori=0; // risultato (1= errori, 0=no errori)

__asm
{
qui devo inserire che blocco? mi potreste aiutare a crearlo?
}

printf("La sequenza di bit %s contiene errori\n",(errori?"":"non "));

}


-----------------------------------------------------------------
#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
}
-----------------------------------------------

Cosa devo fare?
Grazie per la vostra futura collaborazione.
Cordialissimi saluti a tutti voi programmatori
Mi potreste creare voi il programma SE VOI potete?
Chi trova un amico trova il tesoro!
CrisLoveStefy
New Member
New Member
 
Messaggio: 1 di 70
Iscritto il: 22/06/2006, 17:45

Ciao ragazzi....

Messaggioda CrisLoveStefy » 24/06/2006, 10:55

:( :( :( :( :( Vi prego dovete aiutarmi ci tengo tanto a dare quest'esame. So che i professori sono un pò stronzetti perchè scusa.....devi aver fatto tutti e tre elaborati per entrare a fare l'esame? Non è possibile. Quindi vi scongiuro di aiuarmi solo una volta e poi mi arrangerò dasolo vi prego!
Fatemi questi due esercizi devo consegnarli entro domani o alneno entro lunedì. Vi prego sul serio devo almeno sostenere quest'esame. Grazie e mi sdebiterò un casino a chi mi ha aiutato! :( :( :( :( :( :( :(
Chi trova un amico trova il tesoro!
CrisLoveStefy
New Member
New Member
 
Messaggio: 3 di 70
Iscritto il: 22/06/2006, 17:45

Messaggioda CrisLoveStefy » 25/06/2006, 06:26

Ok ho visto che nessuno mi aiuta e quindi......come al solito sono un fallito. Grazie per la vostra collaborazione. Aspetto risposte......
Chi trova un amico trova il tesoro!
CrisLoveStefy
New Member
New Member
 
Messaggio: 4 di 70
Iscritto il: 22/06/2006, 17:45

Messaggioda TheWiz@rd » 25/06/2006, 14:57

già... hai capito benissimo cosa sei!
TheWiz@rd
TheWiz@rd
Junior Member
Junior Member
 
Messaggio: 141 di 172
Iscritto il: 27/01/2004, 18:11
Località: Italy

Messaggioda Pablo » 25/06/2006, 16:57

guarda che la programmazione in assembler non è una cosa che immediata e diffusa come il c++ (per esempio)
Avatar utente
Pablo
Junior Member
Junior Member
 
Messaggio: 80 di 361
Iscritto il: 04/11/2005, 21:58

Messaggioda stellacometa2003 » 25/06/2006, 19:36

TheWiz@rd ha scritto:già... hai capito benissimo cosa sei!


Nooo ma dai..non puoi dare risposte del genere..non è carino da parte tua!
Avatar utente
stellacometa2003
Senior Member
Senior Member
 
Messaggio: 1477 di 1844
Iscritto il: 03/10/2005, 21:11
Località: Cinisi (PA)

Messaggioda TheWiz@rd » 25/06/2006, 21:09

Mha... non credo di aver detto chissà che cosa. E poi, se l'e cercata. :twisted:
TheWiz@rd
TheWiz@rd
Junior Member
Junior Member
 
Messaggio: 142 di 172
Iscritto il: 27/01/2004, 18:11
Località: Italy

Ehm.....

Messaggioda CrisLoveStefy » 26/06/2006, 07:41

Innanzitutto ringrazio :D stellacometa :D per avermi rispettato. Veramente sono io che chiedo come si dice "pappa fatta" e dovrei scusarmi per questo. Sono stato abituato così e purtroppo nessuno deve mettere in discussione il mio carattere....quindi chiedo infinitamente scusa per come mi sono comportato....ma il problema dell'elaborato 1 mi ha aiutato il mio compagno che dopo mille tentativi di chiamata al cellulare è riuscito a rispondermi......ma mi manca solo l'elaborato quello dei bit che devo consegnarlo entro stasera o stanotte. Come faccio ad accedere all'n-esimo elemento e poi a contare i bit e a verificare se a bit di parità pari o dispari? Quali sono i comandi principali? Grazie.


PS: "Abbiate più rispetto e otterrete molta colaborazione" questo è il modo di comportarsi in un forum. Me l'ha detto mio padre che gestisce il forum del LFGM. Laboratorio Fondazioni Guglielmo Marconi.

Dove posso trovare un manuale completo di assembler per comprarlo? Magari a basso costo?
Chi trova un amico trova il tesoro!
CrisLoveStefy
New Member
New Member
 
Messaggio: 5 di 70
Iscritto il: 22/06/2006, 17:45

Messaggioda stellacometa2003 » 26/06/2006, 12:08

Tempo fa ero partita sparata per imparare assembly ma poi mi sono dovuta ricredere che prima ho ancora molto da imparare..però "pascolando" per il web ho trovato utile questo:

http://www.giobe2000.it/Tutorial/index.htm

Che ne pensi?
Avatar utente
stellacometa2003
Senior Member
Senior Member
 
Messaggio: 1479 di 1844
Iscritto il: 03/10/2005, 21:11
Località: Cinisi (PA)

Messaggioda CrisLoveStefy » 26/06/2006, 14:46

grazie del link ma forse deciderò di abbandonare l'univerrsità e di studiare fuoricorso.......non riesco a fare il problema elaborato 3 quello dei bit di parità....mi sento un fallito....grazie tante stellina!
Chi trova un amico trova il tesoro!
CrisLoveStefy
New Member
New Member
 
Messaggio: 6 di 70
Iscritto il: 22/06/2006, 17:45

Prossimo

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite