.dsy:it.
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Progetto della sicurezza di rete (http://www.dsy.it/forum/forumdisplay.php?forumid=257)
-- Homework assembly per lunedì 15/10/2007 (http://www.dsy.it/forum/showthread.php?threadid=32335)


Posted by jeppojeps on 10-10-2007 17:00:

Homework assembly per lunedì 15/10/2007

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


Posted by derie on 11-10-2007 16:50:

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?

__________________
the groupies è un evento...


Posted by ddrandom on 11-10-2007 18:44:

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.


Posted by jeppojeps on 12-10-2007 11:07:

Array, numeri casuali e funzioni

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...


Posted by derie on 13-10-2007 15:46:

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

__________________
the groupies è un evento...


Posted by jeppojeps on 14-10-2007 08:29:

scanf e Co.

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.....


All times are GMT. The time now is 03:45.
Show all 6 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.