|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2010
Messaggi: 162
|
[Assembly&IA-32.]passaggio parametri interrupt
anche se la mia non è proprio una domanda di programmazione, ma non ho trovato sezione migliore: chi mi sa dire qualcosa di più sul passaggio di parametri durante gli interrupt?
__________________
Acer 5920g: T7500 GeForce 8600GT 2GB DDR2 250HDD |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Ogni interrupt software richiede che i parametri in ingresso siano messi in opportuni registri.
Ogni interrupt puo' quindi richiedere che siano valorizzati i propri registri, prima di essere richiamato. In modo praticamente casuale. AH oppure AX sono i registri utilizzati tipicamente come selettori della funzione. Ma non e' sempre cosi'. Per il resto e' anarchia.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6661
|
Forse "richiedere" non è la parola più adatta: sarebbe meglio dire che l'interrupt suppone che in determinati registri ci siano i dati che gli servono.
__________________
![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Gia'.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
#5 | |
Member
Iscritto dal: Jan 2010
Messaggi: 162
|
Quote:
per "dati che gli servono" intendiamo: - indice della routine a cui fare riferimento - code segment e instruction point - eventuali stack pointer per sapere dove ritornare al termine della routine?
__________________
Acer 5920g: T7500 GeForce 8600GT 2GB DDR2 250HDD |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6661
|
Quote:
I dati che gli servono possono essere i più svariati, dai singoli valori interi (in AX, BX, e così via) ai puntatori tipo ES:BP o DS:SI e via dicendo. Le informazioni di ritorno vengono messe a loro volta nei registri. Ad esempio, se vuoi sapere l'ora di sistema chiami l'interrupt 33 (0x21) impostando AH=0x2C e al ritorno avrai in CH le ore, in CL i minuti, in DH i secondi e in DL i centesimi di secondo (quindi fa' attenzione che se avevi informazioni importanti in CX e DX è meglio metterli nello stack).
__________________
![]() |
|
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Jan 2010
Messaggi: 162
|
grazie
__________________
Acer 5920g: T7500 GeForce 8600GT 2GB DDR2 250HDD |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:23.