JumpMan Inserito: 26 gennaio 2004 Segnala Share Inserito: 26 gennaio 2004 Avendo un FC con un dato Temp che si chiama #PippoChe differenza c'è tra il fare:L ##Pippo LAR1 e: LAR1 ##Pippo?Perchè ho notato che il 1° metodo funziona anche con parametri IN/OUT/ON-OUT mentre il 2° funziona solo con i dati Temp.Ciao Link al commento Condividi su altri siti More sharing options...
netwalker Inserita: 11 marzo 2004 Segnala Share Inserita: 11 marzo 2004 Possibile che con tutti i cervelloni che bazzicano in questo forum non ci sia nessuno che lo sa? Link al commento Condividi su altri siti More sharing options...
SuperD Inserita: 11 marzo 2004 Segnala Share Inserita: 11 marzo 2004 Nel primo caso carichi il valore scritto in Pippo nel registro AR1, nel secodo caso sommi al valore di AR1 il valore scritto in pippo. Spero di essere stato chiaro!Ciao Link al commento Condividi su altri siti More sharing options...
rddiego Inserita: 11 marzo 2004 Segnala Share Inserita: 11 marzo 2004 Il primo ed il secondo caso fanno la STESSA COSA. La differenza è che nel primo caso è possibile caricare anche un valore a 16 bit, nel secondo è possibile solo scrivere valori a 32 bit.L'indirizzo di un qualsiasi oggetto di memoria è sempre un numero a doppia precisione.Quando nel primo caso carichi "pippo", questo viene copiato nell'accumulatore (a 32 bit) e con l'operazione LAR1 viene caricato l'accumulatore nel registro 1.Nel secondo caso nel registro 1 viene direttamente caricato la doppia parola "pippo" (deve essere però una doppia parola).Compreso? Link al commento Condividi su altri siti More sharing options...
SuperD Inserita: 11 marzo 2004 Segnala Share Inserita: 11 marzo 2004 Ha ragione rddiego, ho interpretato male la cosa, confermo tutto. Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 11 marzo 2004 Autore Segnala Share Inserita: 11 marzo 2004 Basta chiamarli e i cervelloni arrivano subito . Link al commento Condividi su altri siti More sharing options...
netwalker Inserita: 12 marzo 2004 Segnala Share Inserita: 12 marzo 2004 Rimane la domanda :Perchè il secondo caso funziona solo su tipo di dati TEMP?? Link al commento Condividi su altri siti More sharing options...
FabioS Inserita: 13 marzo 2004 Segnala Share Inserita: 13 marzo 2004 (modificato) Come già correttamente sottolineato il secondo metodo accetta oltre a costanti in formato P#, dati a 32 bit ma solo MD, LD, DBD o DID (come dice l'. dell'editor andando sopra l'istruzione evidenziata in rosso in quanto non accettata).Quindi accetta solo variabili dichiarate TEMP perchè fanno parte dell'area L a differenza delle dichiarazioni INPUT/OUTPUT Modificato: 13 marzo 2004 da FabioS Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 14 marzo 2004 Autore Segnala Share Inserita: 14 marzo 2004 (modificato) Scusate se sono prolisso, ma faccio un esempio: In un FB (supponiamo FB1) ho un parametro di ingresso double word di nome #Pippo (che risiede nella DB d’istanza , supponiamo "DB1"). Perché all’interno di FB1 mi accetta:LAR1 "DB1".Pippo , e non accetta invece:LAR1 #Pippo ? Ho capito che si aggira il problema usando la doppia istruzione (L #Pippo ….LAR1), ma mi chiedo se c'è una motivazione valida della non elasticità del 2° metodo (quello "monoriga").Ciao Modificato: 14 marzo 2004 da JumpMan Link al commento Condividi su altri siti More sharing options...
Supertony Inserita: 2 luglio 2004 Segnala Share Inserita: 2 luglio 2004 I parametri di ingresso di FB e FC non possono essere usati direttamente per indicizzare.Ad esempio:-------------------------------FB1,DB1input: #N_DBAUF DB[#N_DB] <-----SBAGLIATO-------------------------------Se tu invece definisci anche una temporanea, passi per quella, e poi puoi usarla per indicizzare:-------------------------------FB1,DB1input: #N_DBtemp: #N_DB_TEMPL #N_DBT #N_DB_TEMPAUF DB[#N_DB_TEMP] <-----CORRETTO-------------------------------Gli esempi sopra si riferivano all'apertura di un DB; volendo indicizzare ad esempio una word, usando AR1, la sintassì è:L DBW[AR1,p#0.0]dove il contenuto di AR1 deve essere stato trasferito a priori, ma non direttamente: l'unica soluzione è appunto passare per le 2 righe di istruzione del tipoL P##INDIR_INGLAR 1perchè in questo modo c'è un passaggio per l'accumulatore ACCU1 a 32bit. Link al commento Condividi su altri siti More sharing options...
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