Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - Uso di assembly all'interno di C++ e chiamta agli interrupt
Forum - Altri Linguaggi - Uso di assembly all'interno di C++ e chiamta agli interrupt

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
emanuele19956 (Normal User)
Newbie


Messaggi: 19
Iscritto: 19/05/2013

Segnala al moderatore
Postato alle 13:23
Domenica, 19/05/2013
Salve a tutti, sono nuovo del forum :)
Spero di essere nella sezione giusta, dato che quello che voglio scrivere tocca diversi ambiti.

Quello che voglio fare è un software in C++ che includa codice assembly in grado di controllare la comunicazione tra due pc tramite porta seriale.
Scrivo non per farmi aiutare nell'algoritmo da implementare (a cui voglio lavorare da solo), ma solamente nei passaggi che devo fare per far funzionare il tutto. L'ambiente che uso è Visual Studio 2012.

Il problema principale si manifesta nel momento in cui chiamo gli interrupt del bios. Il punto è che la mia scheda madre è piuttosto avanzata e purtroppo non è dotata di porta seriale, cosicché quando, ad esempio, chiamo l'int 14h Windows mi dà un errore madornale. Come posso fare per lavorare comunque? Esiste un modo per simulare la porta seriale? E soprattutto la porta simulata verrebbe riconosciuta da un linguaggio a basso livello come assembly?

In realtà l'obiettivo finale è quello di integrare poi il codice C++ in un programma in Visual Basic cosicché la porta seriale possa essere controllata tramite interfaccia grafica ed eventi.

Mi rendo conto di non aver spiegato benissimo, ma non so fin dove posso spingermi dato che non sono certo di essere nella giusta sezione.

In ogni caso chiedetemi riguardo ogni cosa che non vi è chiara.

Grazie in anticipo.

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 8:30
Lunedì, 20/05/2013
Guarda che in .NET esiste già il modo per usare le porte seriali e comunque non credo che windows ti lasci chiamare il BIOS a tuo piacimento......... Se ti serve per forza l' assembly scrivi tutto in assembly non vedo il senso di fare un "mischiotto". Inoltre puoi emulare una porta seriale scrivendo un driver per windows ma comunque non sarà mai come avere fisicamente la porta seriale. Il " la porta simulata verrebbe riconosciuta da un linguaggio a basso livello come assembly" non ha alcun senso per me, dato che l' assembly non riconosce proprio niente in quanto non è una persona!

PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 10:53
Lunedì, 20/05/2013
Usare la porta seriale tramite int 14h è una cosa che funziona solamente sotto DOS(*).

Quando sei in Windows devi sfruttare le API di Windows, non si scappa.



(*) = A scanso di equivoci. Il DOS non è la schermata nera della riga di comando, quella è la Windows Console. Per DOS intendo il vecchio sistema operativo MS-DOS.

Ultima modifica effettuata da TheKaneB il 20/05/2013 alle 10:55
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 12:24
Lunedì, 20/05/2013
eh immaginavo che non potessi fare quei riferimenti al BIOS in modalità protetta, ma non ero sicurissimo....... Come al solito TheKaneB si dimostra utile :D Comunque se non hai a disposizione una vera seriale devi scrivere un driver windows per emularla, usando qualche altro hardware al posto della porta seriale, quindi penserei all' USB anche se convertitori USB-seriale esistono già (e sono hardware).......

PM Quote
Avatar
emanuele19956 (Normal User)
Newbie


Messaggi: 19
Iscritto: 19/05/2013

Segnala al moderatore
Postato alle 14:53
Lunedì, 20/05/2013
Vi spiego le ragioni del mischiotto, come diceva qualcuno...
A me per principio dà abbastanza fastidio essere costretto ad usare librerie chiuse di Windows per controllare l'hardware e di conseguenza non poterne capire il funzionamento.. e quindi pensavo ad usare un linguaggio "diretto", cioè l'assembly... E ho pensato di integrarlo inline col C++ perché alla fine vorrei che la porta fosse usabile tramite interfaccia grafica, e qui si crea il bisogno del visual basic...

Sicuri che non esiste un modo per chiamare il bios da windows?

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:32
Martedì, 21/05/2013
Allora se le ragioni sono di principio usa linux, e per l' interfaccia grafica esistono le Qt, usarle sarebbe una scelta migliore di fare un "mischiotto". Windows lavora in modalità protetta e quindi il BIOS non è raggiungibile, INOLTRE i tuoi programmi sono eseguiti sul ring3 quindi non hai privilegi di accesso all' hardware, se vuoi qualcosa più a basso livello, diciamo così, devi scrivere un driver e lavoreresti su ring0 (l' anello del kernel). Comunque credo seriamente che tu debba usare linux visto come stanno le cose.......

PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 17:57
Martedì, 21/05/2013
Anche Linux gira in modalità protetta e non consente le chiamate al BIOS.

Al massimo dovresti usare DOS ( http://www.freedos.org/ )

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 20:31
Martedì, 21/05/2013
Si ma linux era per il fatto che volendo lui può sapere come viene gestita la seriale, anche se per capirlo......... ehm tanti auguri

PM Quote
Avatar
emanuele19956 (Normal User)
Newbie


Messaggi: 19
Iscritto: 19/05/2013

Segnala al moderatore
Postato alle 21:27
Martedì, 21/05/2013
Parlavo oggi col mio professore e siamo giunti alla stessa conclusione. Linux per capire, windows 95 per chiamare il bios. A quanto pare con win95 era ancora possibile.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo