Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Didattica in generale > Archivio > Progetto della sicurezza di rete
 
Homework assembly per lunedì 15/10/2007
Clicca QUI per vedere il messaggio nel forum
jeppojeps
Ciao ragazzi, sono ancora un po' indietro con l'assembly ma quantomeno ho scritto i listati in C, giusto per avere un idea da cui partire...se ne avete bisogno li trovate in allegato.
Sono in unico file, trovate i commenti per poterli separare.

Ciao

derie
Ciao,
qualcuno può spiegarmi brevemente come gestisce i numeri negativi?

sia la dichiarazione che l'uso dei registri...grazie...

qualcuno è riuscito a creare l'array con numeri casuali?

ddrandom
per i numeri negativi non c'è alcuna dichiarazione particolare è sufficiente usare gli operatori corretti. add e sub funzionano correttamente sia con i numeri positivi che con quelli negativi, mentre mul e div funzionano solo con i numeri positivi. Per moltiplicare o dividere numeri negativi devi usare rispettivamente imul e idiv.

jeppojeps
Per creare un vettore con i numeri casuali, è sufficiente appoggiarsi alla libreria standard del C, non ditemi che qualcuno ha talmente tanta voglia di scrivere una funzione che generi dei numeri casuali in assembly quando c'è ne già una nelle librerie standard int rand(void) è sufficiente stare attenti a come muovere i registri esp e ebp e si possono chiamare tutte le funzioni del C...anche quelle personalizzate....tipo per ordinare un vettore.... (voleva essere un suggerimento)

La cosa da ricordare è che le funzioni standard del C agiscono sui registri in un certo modo, cioè lasciano inalterati certi registri e ne possono modificare altri, magari le funzioni personalizzate non seguono questo tipo di schema e ci si può trovare qualche valore a troie in qualche registro che supponevamo non venisse toccato, comunque per tutte queste delucidazioni c'è un po' di materiale sul manuale di Paul Carter, che trovate sul sito www.drpaulcarter.com c'è anche la versione in italiano tradotta da Giacomo Bruschi. Che non c'entra con il Prof Danilo Bruschi del nostro corso ma che è valida ugualmente.


Per i più pigri con l'assembly il GCC può senz'altro aiutare

gcc -S -o esempio.asm listato.c

dove esempio.asm sarà il file generato dal gcc che contiene il codice assembly del listato C, che non credo sia compatibile con nasm, non ho provato, comunque è utile per farsi un'idea...

derie
ho seguito le istruzioni sulla guida per chiamare le funzioni del c ma non funziona. Devo includere la libreria che contiene la funzione rand?
cmq non mi funziona neanche la scanf che c'è come esempio nella guida...help...please

jeppojeps
Per prima cosa, ricordati che gli underscore prima del nome delle funzioni non vanno mai messi se compili con gcc, subito dopo la direttiva global nel segmento .text devi aggiungere extern e il nome della funzione che vuoi chiamare, per chiamare rand non devi includere nulla di speciale:



global asm_main
extern rand

poi quando la vorrai richiamare, utilizza la chiamata


call rand

e il valore ritornato sarà in eax


Mi raccomando prima della chiamata di allocare lo spazio giusto sullo stack. E quando finisci di aggiungere lo spazio, altrimenti arrivi alla fine del ciclo che sfondi lo stack e hai una segmentation fault.....

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate