Debianizzati.Org | Forum | Blog | Guide | IRC
 
 
Forum Italiano Debian - Debianizzati.Org
Novembre 22, 2008, 05:01:56 pm *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Aiuto Ricerca Agenda Accedi Registrati  
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: assembler e linux  (Letto 1348 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
scorpion89
Full Member
***

Karma: +4/-0
Scollegato Scollegato

Messaggi: 101


Mostra profilo E-mail
« inserita:: Aprile 05, 2006, 11:38:44 pm »

Salve a tutti e volevo chiedervi,
ho provato a fare dei semplici programmini assembler(compilati con nasm) e tutto ok!
Però riesco a usare soltanto l\'interrupt 80h, quello del kernel  e lo 03h e nient\'altro!!
Sapete come posso fare?? O altri interrup??
Vi posto il codice, ci fossero degli errori.
Codice:

section .text

GLOBAL _start

_start:

;scrittura del messaggio
MOV ECX,msg ;indica che la stringa da scrivere è mess
MOV EDX,lun ;indichiamo la lunghezza della stringa quindi l\'offeset
MOV EBX,1 ;indica che va scritto sullo schermo
MOV EAX,4 ;system_call per scrivere a video
INT  80h ;chiamata al kernel

;lettura del messaggio
XOR EBX,EBX ;indica che va scritto sullo schermo
MOV EAX,3 ;system_call per scrivere a video
INT  80h ;chiamata al kernel

;terminare il programma
MOV EAX,1 ;system_call per uscire
MOV EBX,0 ;indica il livello di errore
INT 80h ;chiamata al kernel


section .data


msg db   \"Hello World\",10
lun equ $-msg

E funziona ma dove salva la stringa o il carattere ke aquisisco con la seconda parte, se lo aquisisco!

Ciao e grazie

Post modificato da: MaXeR, alle: 05/04/2006 18:14
Registrato
MaXeR
Administrator
Hero Member
*****

Karma: +42/-0
Scollegato Scollegato

Messaggi: 3423


161200863 maxer@knio.it
Mostra profilo WWW E-mail
« Risposta #1 inserita:: Aprile 06, 2006, 12:21:24 am »

forse sono parecchio incriccato con l\'asm...
ma non trascuri alcuni campi?
come edx ed ecx?

http://profs.sci.univr.it/~quaglia/AE/ASM/system_call_linux.html
Registrato


scorpion89
Full Member
***

Karma: +4/-0
Scollegato Scollegato

Messaggi: 101


Mostra profilo E-mail
« Risposta #2 inserita:: Aprile 06, 2006, 04:09:01 am »

Era proprio quello che mi mancava!!
Però un altro problema! Come faccio ad usare interrupt hardware visto che non ci sono riuscito?? Se aveste dei programmi di esempio.

Post modificato da: scorpion89, alle: 05/04/2006 22:09
Registrato
MaXeR
Administrator
Hero Member
*****

Karma: +42/-0
Scollegato Scollegato

Messaggi: 3423


161200863 maxer@knio.it
Mostra profilo WWW E-mail
« Risposta #3 inserita:: Aprile 06, 2006, 06:30:40 am »

questo esula dalla mia conoscenza di ASM...
sono fermo alle basi (quelle date dall\'esame di Architetture Hardware ;-) )!

Prova a guardare http://profs.sci.univr.it/~quaglia/AE/ASM/ , ci sono dei link interessanti per approfondire... magari trovi la risposta...

di più nin sò Sad
Registrato


Tmy17
Jr. Member
**

Karma: +4/-0
Scollegato Scollegato

Messaggi: 64


Mostra profilo E-mail
« Risposta #4 inserita:: Aprile 06, 2006, 08:30:13 pm »

Premesso che pure io di ASM conosco davvero poco, credo che non puoi usare altri interrupt a meno di non passare in kernel space, perchè i programmi sotto linux vengono sempre eseguiti in modalità protetta. Per chiamare altri interrupt devi andare a ring 0 (la stessa modalità con cui funziona il kernel), ma mi pare che l\'unico modo è scriverti un modulo per il kernel.

Ciao!
Registrato
scorpion89
Full Member
***

Karma: +4/-0
Scollegato Scollegato

Messaggi: 101


Mostra profilo E-mail
« Risposta #5 inserita:: Aprile 07, 2006, 10:01:17 pm »

Sono riuscito a fare aquisizione e stampa di caratteri e numeri.
E se per caso vi interessa l\'argomento, quando ho fatto la relazione per la mia prof, la posto o altro, cmq ve la faccio avere.

Però volevo chiedere una cosa. Di solito CX(ECX) viene usato per  i cicli ma se lo uso per stampare indirizzare i caratteri??
Si usa un altro registro o devo fare degli ammattimenti per farci stare tutte e 2 le informazioni?

Ciao e grazie
Registrato
MaXeR
Administrator
Hero Member
*****

Karma: +42/-0
Scollegato Scollegato

Messaggi: 3423


161200863 maxer@knio.it
Mostra profilo WWW E-mail
« Risposta #6 inserita:: Aprile 07, 2006, 10:09:58 pm »

Smiley

per il ciclo...beh...io voterei per gli \"ammattimenti\"...
in pratica devi usare lo stack (push & pop) per memorizzare ciò che andresti a sovrascrivere, per poi estrarlo...
io, almeno, facevo così ;-)

un Claudio che ricorda quanto si divertiva con l\'esame di Architetture degli Elaboratori Cheesy
Registrato


SuperSonic
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 23


Mostra profilo E-mail
« Risposta #7 inserita:: Giugno 05, 2006, 04:17:22 pm »

in CX puoi mettere quello che vuoi
basta che dopo non usi appunto il ciclo loop

il fatto è che così non si capisce se vuoi effettivamente fare un ciclo o solo memorizzare un dato

secondo me è solo questione di leggibilità ..
Registrato
SuperSonic
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 23


Mostra profilo E-mail
« Risposta #8 inserita:: Giugno 05, 2006, 04:20:17 pm »

MaXeR ha scritto:
Citazione


un Claudio che ricorda quanto si divertiva con l\'esame di Architetture degli Elaboratori Cheesy


beato te che ti diverti , io ho un prof a dir poco rintronato che ci insegna MIPS ...
ho l\'esame quest\'estate e non so una WORD di MIPS :laugh:
Registrato
MaXeR
Administrator
Hero Member
*****

Karma: +42/-0
Scollegato Scollegato

Messaggi: 3423


161200863 maxer@knio.it
Mostra profilo WWW E-mail
« Risposta #9 inserita:: Giugno 05, 2006, 07:38:48 pm »

uff....

perchè farsi così male :|
Registrato


Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Altri Topic Correlati
Oggetto Aperta da Risposte Visite Ultimo messaggio
flash x linux Multimedia beda2 5 672 Ultimo messaggio Maggio 20, 2005, 04:21:55 pm
da MaXeR
Linux Pratico diventa Linux&c. OffTopic nic 2 411 Ultimo messaggio Gennaio 20, 2006, 11:27:58 pm
da tindal
Tv e Linux Multimedia Palo_Pd 3 543 Ultimo messaggio Aprile 16, 2007, 02:03:42 pm
da revjones
./configure: The file /usr/src/linux/include/linux/version.h does not exist. Installazione Midnight 7 978 Ultimo messaggio Aprile 28, 2007, 09:43:53 pm
da schnauzer
compilazione codice assembler Programmazione master_fx 1 540 Ultimo messaggio Agosto 05, 2008, 08:53:41 pm
da francys
Powered by MySQL Powered by PHP Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC XHTML 1.0 valido! CSS valido!
Pagina creata in 0.09 secondi con 20 interrogazioni al database.