Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo
Politica, accademia e industria a confronto su mercato unico, sicurezza e competitività. Nei laboratori di Vimercate, Nokia ha mostrato le nuove generazioni di chip ottici e i test che ogni prodotto deve superare prima di arrivare sul mercato
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi
Abbiamo assemblato e provato la Fiido Nomads Pro, evoluzione del modello da trekking già presente nella gamma, che migliora in tutto, soprattutto grazie al motore centrale, fluido e potente. Ottima app, costruzione solida e prezzo ok completano il quadro
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto
Lo chassis in Ceraluminium è il cuore di questo notebook in edizione 2026, un modello pensato per garantire produttività con le tipiche applicazioni di produttività personale e capace di offrire un'autonomia di funzionamento lontano dalla presa di corrente da riferimento. Potenza, facilità di trasporto e costruzione robusta tutto in un notebook compatto.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-01-2005, 23:29   #1
pacovt87
Member
 
Iscritto dal: Dec 2004
Messaggi: 55
asm

Ciao a tutti! C'è qualcuno che potrebbe darmi una mano con asm??
pacovt87 è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2005, 11:01   #2
pacovt87
Member
 
Iscritto dal: Dec 2004
Messaggi: 55
non sapete se c'è qualcuno sul forum che conosce bene assembler?
pacovt87 è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2005, 11:25   #3
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Dipende da cosa ti serve....
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2005, 12:24   #4
pacovt87
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?
pacovt87 è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2005, 12:42   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Chiedi
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2005, 13:43   #6
pacovt87
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
pacovt87 è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2005, 14:53   #7
cionci
Senior Member
 
L'Avatar di cionci
 
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...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2005, 15:44   #8
pacovt87
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]?
pacovt87 è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2005, 19:44   #9
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947

Ultima modifica di repne scasb : 03-02-2005 alle 12:34.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2005, 22:16   #10
fantoibed
Senior Member
 
L'Avatar di fantoibed
 
Iscritto dal: May 2003
Città: Trieste, Pordenone
Messaggi: 920
(OT) Nel 2005 c'è ancora gente che programma software per dos in modalità reale?
fantoibed è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2005, 08:14   #11
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947

Ultima modifica di repne scasb : 03-02-2005 alle 12:34.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2005, 10:43   #12
pacovt87
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
pacovt87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2005, 12:58   #13
fantoibed
Senior Member
 
L'Avatar di fantoibed
 
Iscritto dal: May 2003
Città: Trieste, Pordenone
Messaggi: 920
Quote:
Originariamente inviato da repne scasb
Probabilmente, non si tratta di DOS. Se si fosse trattato di DOS, la routine "sarebbe" completamente errata, in quanto "si deve" utilizzare l'INT 21h Func. 25h per settare un vettore d'interrupt, e l'INT 21h Func. 35h per leggerlo.

Credo si tratti di un handler per la gestione della tastiera di una qualche macchina operatrice di tipo industriale. Considera, che "a mio personale giudizio (si tratta di una personale casistista su lavori da me fatti)" i software embedded per macchine industriali constano di:

30% - 80186 in modalita' reale.
30% - i80486 in SMM o reale.
40% - Altre tipologie di CPU/modelli di accesso-indirizzamento.

Tutto cio' nel 2005; e non c'e' ragione che tutto cio' non perduri per i prossimi anni.
Hai ragione, non avevo pensato ai plc.
fantoibed è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2005, 15:37   #14
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12113
ma i plc non vengono programmati in ladder?
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2005, 19:02   #15
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
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: 8897
Quote:
Originariamente inviato da repne scasb
Si tratta di un interrupt handler in modalita' reale.

Nel primi 1024 bytes a partire da 0000:0000 in modalita' reale sono stoccati 256 interrupt; per ogni interrupt si hanno 2 byte per l'offset e 2 byte per il segmento.

L'interrupt 9h viene richiamato ogni volta che si preme un tasto (in AX e' leggiibile lo scan-code), quindi per catturare l'INT 9h, questa routine sostituisce l'offset e il segmento originario con uno "specifico", modificanto le locazioni di memoria 0000: (9*4) e 0000: (9*4+2) (offset:segment).

Questa routine presenta alcune illegalita' ed e' in sostanza migliorabile:

1) Manca il LOCK tra i due XCHG. Se si prensentasse un INT 9h tra il primo e il secondo XCHG si otterrebbe un INT 9h incoerente.
2) L'INT 9h e' un NMI e non puo' essere disattivato tramite CLI, ma tramimte l'opportuna riprogrammazione del PIC.
3) Se si vogliono fare le cose per bene, si deve rimappare l'INT 1h hardware a monte dell'INT 9h software, chiamare l'INT software rimappato che chiamera l'INT 9h.
ma quante ne sai?

~§~ 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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2005, 22:50   #16
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947

Ultima modifica di repne scasb : 03-02-2005 alle 12:33.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 13:36   #17
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12113
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
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 19:55   #18
pacovt87
Member
 
Iscritto dal: Dec 2004
Messaggi: 55
domanda da ignorantone: quali sono gli interrupt mascherabili?
pacovt87 è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 20:56   #19
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947

Ultima modifica di repne scasb : 03-02-2005 alle 12:30.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 22:48   #20
pacovt87
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
pacovt87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo Nokia Innovation Day 2026: la sovranità e...
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi In sella alla Fiido Nomads Pro: e-bike con motor...
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto ASUS Zenbook 14 (UX3480AA): tanta autonomia con ...
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare MSI PRO MAX: QD-OLED ultrawide per lavorare, cre...
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
Chiamate con numeri falsi: AGCOM sanzion...
Il radiotelescopio cinese FAST ha scoper...
Certificati TLS più brevi, Let's ...
Milano si candida a sede Onu per la gove...
Dopo Groq e Hugging Face, NVIDIA guarda ...
Thomas Zurbuchen entra in Blue Origin ne...
Qualcomm porta servizi e sicurezza nel g...
Microsoft porta l'inferenza IA sul propr...
Blue Origin aiuterà la NASA nella...
Scoperto pianeta 'ribelle': orbita al co...
smart #2 debutta a Parigi: batteria da 3...
Un certificato in scadenza può la...
BYD ATTO 8, ricarica FLASH dal 10 al 97%...
Ledger e il caso CryptoBilis: furti stim...
Una forza quantistica ha mosso un appara...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:55.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v