|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2004
Messaggi: 55
|
asm
Ciao a tutti! C'è qualcuno che potrebbe darmi una mano con asm??
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Dec 2004
Messaggi: 55
|
non sapete se c'è qualcuno sul forum che conosce bene assembler?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Dipende da cosa ti serve....
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Dec 2004
Messaggi: 55
|
sto studiando da una guida, ho provato a contattare l'autore per email ma non risponde. Ci so delle istruzioni che usa che non capisco, ho solo alcune domande, niente di che! Posso chiedere a te?
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Chiedi
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Dec 2004
Messaggi: 55
|
senti va bene se uso la posta? ti mando un email con un pezzo di codice e ti chiedo un paio di cose
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Posta qui il codice...non sono ferratissimo sull'asm...anche se conosco abbastanza bene l'istruction set...
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Dec 2004
Messaggi: 55
|
è la gestione della tastiera direttamente da hardware.
InitKbrd: ; Come al solito salviamo i registri che verranno modificati PUSH AX ; Memorizza AX nello stack PUSH BX ; Memorizza BX nello stack PUSH ES ; Memorizza ES nello stack ; Carica indirizzo nuovo handler XOR AX,AX ; Azzera AX MOV ES,AX ; Imposta segment = 0 MOV BX,CS ; Carica Segment nuova handler MOV AX,OFFSET NewKbrd ; Carica offset nuova handler ; Memorizza nuovo indirizzo e preleva quello vecchio CLI ; Disattiva gli interrupts mascherabili XCHG AX,ES:[9*4] ; Scambia Offset XCHG BX,ES:[9*4+2] ; Scambia Segment STI ; Attiva gli interrupts mascherabili ; Memorizza vecchio indirizzo (ci servirà per ripristire il vecchio handler) MOV TempKbrd,AX ; Memorizza Offset vecchio handler MOV TempKbrd+2,BX ; Memorizza Segment vecchio handler ; Ripristina i registri salvati nello stack ed esce dalla procedura POP ES ; Ripristina ES dallo stack POP BX ; Ripristina BX dallo stack POP AX ; Ripristina AX dallo stack RET ; Fine procedura Ciao! C'è un istruzione che non riesco a capire: XCHG BX, ES:[9*4+2] ; SCAMBIA SEGMENT Il segment non sarebbe semplicemente ES=0? E comunque perchè [9*4+2]? |
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 13:34. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: May 2003
Città: Trieste, Pordenone
Messaggi: 920
|
(OT)
|
|
|
|
|
|
#11 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 13:34. |
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Dec 2004
Messaggi: 55
|
grazie millem repne scasb. M'hai chiarito parecchie cose. Potrei contattarti per qualche altra cosetta? Cmq grazie ancora
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: May 2003
Città: Trieste, Pordenone
Messaggi: 920
|
Quote:
|
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
ma i plc non vengono programmati in ladder?
__________________
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
Quote:
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#16 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 13:33. |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
si anke x il ladder infatti usavo il simulatore sul pc e poi si trasferiva il tutto al plc.
L'sfc se non sbaglio era un linguaggio + ad alto livello però ke doveva essere convertito in ladder x essere utilizzato (potrei anke sbagliarmi xkè ora come ora non ricordo se era SFC o qualke altra cosa....) Cmq il ladder era simpatico
__________________
|
|
|
|
|
|
#18 |
|
Member
Iscritto dal: Dec 2004
Messaggi: 55
|
domanda da ignorantone: quali sono gli interrupt mascherabili?
|
|
|
|
|
|
#19 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 13:30. |
|
|
|
|
|
#20 |
|
Member
Iscritto dal: Dec 2004
Messaggi: 55
|
visto che dai certe risposte io approfitto, almeno imparo qualcosa in più
questo è il continuo del codice (quello sopra): NewKbrd: ; Salviamo i registri e carichiamo l'indirizzo del Buffer PUSH AX ; Memorizza AX nello stack PUSH BX ; Memorizza BX nello stack PUSH DS ; Memorizza DS nello stack PUSH CS ; Memorizza CS nello stack XOR AX,AX ; Azzera AX POP DS ; Imposta segment del Buffer MOV BX,OFFSET Buffer ; Indirizzo dati tasti ; Leggiamo il valore inviato dalla tastiera (Porta 60H) - Se >= 128 -> tasto rilasciato IN AL,60H ; Legge dato dalla porta della tastiera OR AL,AL ; Controlla se >= 128 JS @N1 ; Se si salta ; Impostiamo lo stato del tasto a 1 (Tasto premuto) ADD BX,AX ; Somma indice MOV ScanCode,AL ; Tasto premuto MOV BYTE PTR [BX],1 ; Attiva tasto JMP @N2 ; Salta ; Queste istruzioni invece servono quando il tasto viene rilasciato @N1: AND AL,07FH ; Maschera tasto ADD BX,AX ; Somma indice MOV ScanCode,0 ; Tasto rilasciato MOV BYTE PTR [BX],0 ; Disattiva tasto ; A questo punto bisogna disattivare la richiesta di interrupt ; (non ci interessa avere copie multiple dello stesso tasto) @N2: IN AL,61H ; Legge dato dalla porta 61H OR AL,80H ; Attiva bit 7 OUT 61H,AL ; Invia il nuovo dato ; Infine bisogna avvertire il processore che può interessarsi degli ; altri interrupts eventualmente presenti MOV AL,20H ; Carica valore OUT 20H,AL ; Invia dato ; Ripristiniamo i registri salvati nello stack POP DS ; Ripristina DS dallo stack POP BX ; Ripristina BX dallo stack POP AX ; Ripristina AX dallo stack ; Usciamo dalla procedura di interrupt (Occhio! IRET e non RET) IRET ; Fine procedura di interrupt 1) i valori da 128 a 255 rappresentano i valori dei tasti quando sono rilasciati? 2)E' troppo se ti chiedo spiegazioni su queste righe? (poi prometto che per un pò non rompo i coglioni ; A questo punto bisogna disattivare la richiesta di interrupt ; (non ci interessa avere copie multiple dello stesso tasto) @N2: IN AL,61H ; Legge dato dalla porta 61H OR AL,80H ; Attiva bit 7 OUT 61H,AL ; Invia il nuovo dato ; Infine bisogna avvertire il processore che può interessarsi degli ; altri interrupts eventualmente presenti MOV AL,20H ; Carica valore OUT 20H,AL ; Invia dato Grazie di tutto |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:24.



















