- Messaggi: 6
- Ringraziamenti ricevuti 0
Istruzione di rotazione che non capisco
7 Anni 9 Mesi fa #1
da orima5
Istruzione di rotazione che non capisco è stato creato da orima5
Sto aspettando il pickit per collaudare il FRIDOM III e sto ripassando le istruzioni Assambler del 16F84.
Sono arrivato alle istruzioni di rotazione dei bit, ma c'e' un risultato che non mi convince. Sto studiando la rotazione dei bit a sinistra con la istruzione
rlf addr,w
inserita nella seguente struttura
org 0x00
clrf 0x03
movlw 0xAA
rlf 0x0C,w
end
quindi dovrei ottenere una rotazione a sinistra del numero 0xAA e ottenere come rotazione a sinistra il numero
0x55, invece il simulatore mi da' come risultato 0x54.
E' giusto il risultato? Oppure io non ho capito qualcosa nel passaggio?
Saluto
Sono arrivato alle istruzioni di rotazione dei bit, ma c'e' un risultato che non mi convince. Sto studiando la rotazione dei bit a sinistra con la istruzione
rlf addr,w
inserita nella seguente struttura
org 0x00
clrf 0x03
movlw 0xAA
rlf 0x0C,w
end
quindi dovrei ottenere una rotazione a sinistra del numero 0xAA e ottenere come rotazione a sinistra il numero
0x55, invece il simulatore mi da' come risultato 0x54.
E' giusto il risultato? Oppure io non ho capito qualcosa nel passaggio?
Saluto
Si prega Accedi o Crea un account a partecipare alla conversazione.
- orima5
- Autore della discussione
- New Member
Riduci
Di più
7 Anni 9 Mesi fa - 7 Anni 9 Mesi fa #2
da Cosimix
Risposta da Cosimix al topic Istruzione di rotazione che non capisco
Ciao!
La soluzione è corretta!
Durante l'operazione di shift a sinistra, il bit più significativo (dei tuoi 8 bit) viene "parcheggiato" nel registro STATUS, perché "in eccesso". Questo bit è quello relativo al riporto (C). Con il successivo shift, il valore contenuto in C si sposterà e diventerà il tuo bit meno significativo.
La stessa operazione si ripete al contrario nel caso di shift a destra.
Quindi:
10101010 (0xAA)
con lo shift a sinistra di una posizione diventa:
01010100 (0x54)
e il bit C è pari a 1.
Con un ulteriore shift a sinistra, otterrai:
10101001
Saluti,
Cosimo
La soluzione è corretta!
Durante l'operazione di shift a sinistra, il bit più significativo (dei tuoi 8 bit) viene "parcheggiato" nel registro STATUS, perché "in eccesso". Questo bit è quello relativo al riporto (C). Con il successivo shift, il valore contenuto in C si sposterà e diventerà il tuo bit meno significativo.
La stessa operazione si ripete al contrario nel caso di shift a destra.
Quindi:
10101010 (0xAA)
con lo shift a sinistra di una posizione diventa:
01010100 (0x54)
e il bit C è pari a 1.
Con un ulteriore shift a sinistra, otterrai:
10101001
Saluti,
Cosimo
Ultima Modifica 7 Anni 9 Mesi fa da Cosimix.
Ringraziano per il messaggio: orima5
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Cosimix
- Elite Member
Riduci
Di più
- Messaggi: 198
- Ringraziamenti ricevuti 26
7 Anni 9 Mesi fa #3
da orima5
Risposta da orima5 al topic Istruzione di rotazione che non capisco
Ti ringrazio per la risposta. Sei stato gentilissimo.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- orima5
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 6
- Ringraziamenti ricevuti 0
7 Anni 9 Mesi fa #4
da Cosimix
Risposta da Cosimix al topic Istruzione di rotazione che non capisco
Di nulla!
Saluti,
Cosimo
Saluti,
Cosimo
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Cosimix
- Elite Member
Riduci
Di più
- Messaggi: 198
- Ringraziamenti ricevuti 26
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.