Discussione: Assembler per PIC
Visualizza messaggio singolo
Vecchio 13 dicembre 07, 16:48   #9 (permalink)  Top
faustog
User
 
L'avatar di faustog
 
Data registr.: 28-02-2006
Messaggi: 1.059
grazie..

grazie jijuja..

no preoccuaprti.. ..qui nel forum ci basta scambiare due chiacchiere.. ..la divisione la faccio fare ai ragazzi di terza in C dicendo loro che possono usare solo incrementi e decrementi e controllare se una variabile sia maggiore di zero oppure no con i cicli while o for.. ..

l'idea di base è che dividendo - divisore ..per n volte fin quando > 0
ogni ciclo si incrementa RISULTATO

per esempio se devo fare 10 : 3 devo pensare di fare:

------10 - 3 = 7 // 7 - 3 = 4 // 4 - 3 = 1 // 1 è < 3 quindi STOP
R=0 // 1 // 2 // 3 //

allora abbiamo 3 con il resto di uno . Ovvero la divisione è ottenuta dalla variabile che incremento ogni ciclo.. . il resto è il valore che rimane del dividendo

va be adesso scendo giu e mi faccio un voletto con l'easy glider ..prima che fa buio

a dopo
fausto




Citazione:
Originalmente inviato da jijuja
Ciao,
Premessa :
Io,ogni volta che creo una parte di codice per "dividere" mi viene diverso...non lo sò perchè ma ti posso dire che ci sono molti modi per farlo
ed in base a dove và utilizzata la ottimizzo.
Certo è che molto deriva dal fatto che in assembler si utilizzano solo variabili globali,problema che con il C non C'è!
Pensa che adirittura io non uso quasi mai la direttiva "Include" ma definisco programma per programma i registri,definizioni e variabili che mi servono
sempre in base a cosa devo fare.
potrei indicarti come procederei io per creare una divisione in assembler come credo la abbia pensata tù :
serve un registro uso contatore (risultato),c'è un dividendo,un divisore ed un eventuale resto...approposito,di solito uso un bit di un registro
anche per definire condizioni di errore tipo divisione per 0 (che non è possibile)
L'ambiente che definisco è 8 bit,numero intero senza virgola e segno. Volendo prevedere ciò o divisioni 16-32 o esagerando 64 bit le cose si complicano non poco.
Allora,prendo il valore da dividere e lo carico in un registro,il valore per il quale dividere e lo carico in un altro registro,
controllo se è 0 ed in caso esco con errore altrimenti eseguo la sottrazione...verifico con il flag appropriato se sono passato per lo 0,in questo caso
la divisione ha solo resto altrimenti carico il risultato nel registro del valore da dividere,incremento il contatore e rieseguo la sottrazione con questo nuovo valore,
ripeto il controllo,eventualmente esco con risultato altrimenti incremento il contatore,ricarico ecc....
Con questo volevo solo renderti l'idea di come procederei!
Pensa (lo sai) che con il C o con il Basic....pensi divido e dividi!!!!
Per questo molti non prendono in considerazione l'assembler...

Ciao!

Ps. se trovassi il tempo ti scriverei un pò di codice ma sono incasinatissimo,in caso chiedi che ti dò le indicazioni che posso!
Approposito,per quanto riguarda il discorso dei palmari,se ricordo bene
una delle ditte che produce le riceventi con ingresso USB per
interfacciarsi con tali è la ACT (.de)
e visto il trattamento ricevuto in alcune occasioni da loro penso che se chiedi
ti darebbero sicuramente i parametri per scambiare i dati con esse,da lì puoi realizzare il Software che ti serve.
faustog non è collegato   Rispondi citando