cagliostro Inserito: 23 giugno 2005 Segnala Inserito: 23 giugno 2005 Ciao a tutti,premetto che sono molto a digiuno nell'uso dei puntatori , ma credo che utilizzandoli renderei molto più efficiente la soluzione del seguente problema.In un Data Block per esempio DB10 al suo interno ci sono 5 word in formato int.Dw0Dw2Dw4Dw6Dw8Ciascuna di queste word contiene un valore, che deve essere scritto sempre nella stessa destinazione per esempio Mw100.ovvero vorrei utilizzando una funzione di puntatore dire prendi il dato scritto in Dw0 e scrivilo su Mw100, oppure prendi il dato in Dw8 e scrivilo in Mw100. Qualcuno mi saprebbe indicare con qualche esempio come potre fare???.Grazie ancora per la vostra preziosa collaborazioneCagliostro
Matteo Montanari Inserita: 23 giugno 2005 Segnala Inserita: 23 giugno 2005 utilizzando i puntatori, (cè un bellisimo scritto del Sig. Milan nella zona didattica (qui) che ne descirve il funzionamento e l'utilizzo)utilizzi un numero (da 0 a 4 nel tuo caso) e punti alla word che ti interessa:0 -> dw01 -> dw22 -> dw43 -> dw64 -> dw8se leggiamo il primo "bit" di ogni word risulta essere:0 -> 0.01 -> 2.02 -> 4.03 -> 6.04 -> 8.0in questo modo dobbiamo solamente moltiplicare per "2" il nostro numero:io di solito faccio così: L #numero della word L 2 *I ( L 10 questo mi serve per creare un offset se devo puntare una )( +I word differente ) SLW 3 LAR1 in questo modo mi sono creato il puntatore, per terminare il tuo programma deci solamente aggiungere: L DBW [AR1,P#0.0] T MW100
cagliostro Inserita: 24 giugno 2005 Autore Segnala Inserita: 24 giugno 2005 Grazie molte ancora keosmm
h.ki Inserita: 24 giugno 2005 Segnala Inserita: 24 giugno 2005 io farei così..LAR1 P#0.0 // inizializzo puntatoreOPN DB10CHK0 : nop 0 // etichetta per loop L DBW[AR1,P#0.0] T MW100 +AR1 P#2.0 // VADO PROX WORD DB10 TAR1 // CARICA VALORE AR1 SU ACCU1 L P#10.0 // CARICO INDIRIZZO ULTIMA WORD DB10 >D // CONTINUA LOOP FINO ALL'ULTIMA WORD, QUINDI ESCIJCN CHK0 ciao
Matteo Montanari Inserita: 24 giugno 2005 Segnala Inserita: 24 giugno 2005 (modificato) con la tua soluzione, h.chi, nel canale MW100, hai sempre il valore dell'ultima word, in quanto in un unica "passata" prelevi i valori dalla word "0" alla word "8".con la "mia" soluzione prelevi solamente il dato della word che ti interessa.occorre verificare cosa vuole fare cagliostro.con il tuo codice, h.chi, è molto più semplice fare:L DB10.DBW8T MW100 Modificato: 24 giugno 2005 da keosmm
kroccodile Inserita: 31 agosto 2005 Segnala Inserita: 31 agosto 2005 Per il tuo problema la soluzione più corretta credo sia fare un salto indicizzato (credo sia questo il nome giusto) SPL e aggiungere puntamenti fissi (se sono giusto 5 e non sono consecutivi o non sono nello stesso DB.Se sono molti e nello stesso DB il metodo più corretto è quello di KEOSMM, anche se io non moltiplicherei per 2 ma farei SLW 4.ciao.
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora