Esercitazioni
PIC - Assembly
|
Come sono rappresentati i numeri in Assembly
Assembly accetta numeri in formato:
- dec decimale
- hex esadecimale (default)
- oct ottale
Maggiori informazioni sui sistemi di numerazione utilizzati in ambito
microprocessore le
trovate qui.
MPASM consente con un comando (direttiva) di definire quale è la radice di
default dei numeri scritti:
Questa informazione va posta nelle prime righe del sorgente per definire
come il compilatore dovrà intendere ogni valore numerico. Se non viene
indicato nulla, il default è hex.
L' Assembler MPASM consente in ogni momento di dichiarare un qualsiasi numero
in una diversa base, utilizzando una specifica scrittura, qualsiasi sia
la radice definita all' inizio del sorgente.
Le diverse radici sono indicate con l' aggiunta di un prefisso o un post
fisso al numero:
Aggiunta |
Alternative |
Base |
Esempio |
nessuna |
- |
quella definita da radix |
radix
oct
movlw 100 ;
cento ottale
|
Base specificata
singolarmente - valore indipendente dalla radice definita |
D'numero'
d'numero' |
.numero
|
decimale |
movlw
D'100'
movlw d'100'
movlw .100 |
H'numero'
h'numero' |
0xnumero |
esadecimale |
movlw
H'1F'
movlw h'CA'
movlw 0x100 |
B'numero'
b'numero' |
|
binario |
movlw
B'100'
movlw b'10010001' |
O'numero'
o'numero' |
|
ottale |
movlw
O'100'
movlw o'100' |
A'char' |
'char' |
ASCII |
movlw
A'C'
movlw
'C' |
|
Il compilatore non può correggere la mancanza o una definizione errata
della radice di un numero; può solamente eseguire quanto indicato nel sorgente.
Così il numero, scritto senza alcuna altra specifica, sarà inteso in dipendenza dalla radice dichiarata; se non
viene dichiarata una specifica radice, quella di default è
hex.
Quindi, scrivendo le cifre 100 si avrà:
radix |
cifre |
valore |
|
radix |
cifre |
valore |
non specificata |
100 |
100 hex |
qualsiasi
o non specificata |
.100
d'100'
D'100'
|
100 dec
|
dec |
100 |
100 dec |
0x100
h'100'
H'100' |
100 hex |
oct |
100 |
100 oct |
b'100'
B'100' |
100 binario |
hex |
100 |
100 hex |
o'100'
O'100' |
100 ottale |
il che è, evidentemente, molto diverso.
Quindi, per quanto riguarda l'identificazione di un numero nel sorgente, è
fortemente consigliato l'usare sempre i segni indicati per dichiarare
chiaramente il
modo in cui è espresso quel dato numero, anche se è stata fissata una radice generale.
|
La pratica di fissare una radice è, comunque, pure consigliabile: è facile, nella stesura del sorgente, farsi sfuggire qualche
definizione locale della base in cui il numero è previsto e questo può avere
conseguenze
negative sulla compilazione; se abbiamo definito una radice, ogni volta che un
numero verrà scritto senza indicatore, sarà inteso dal compilatore come
appartenete a quella radice e sarà così molto più facile risolvere situazioni
altrimenti complicate. Per contro, definire una radice generale può creare
problemi quando, in un programma più o meno complesso, si includano elementi
esterni che potrebbero richiedere radici diverse.
Per default la radice, se non espressa esplicitamente, è hex
(esadecimale)
|
In generale, la radice dec è preferibile in quanto è abbastanza comune avere la tendenza a
considerare i
numeri come decimali. Di solito la radice decimale
riduce le possibilità di errore nella stesura del sorgente, ma è ben possibile
definire una diversa radice a seconda delle proprie preferenze o nel caso in cui siamo
sicuri di utilizzare solamente numeri espressi in quel dato modo.
Due note importanti:
Il compilatore non può correggere la mancanza o una definizione errata,
come la radice di un numero; può solamente eseguire quanto avete indicato nel sorgente.
|
Quindi se indicate di voler utilizzare una radice decimale, il compilatore
eseguirà la vostra impostazione, ma se poi utilizzate i numeri come se
fossero in radice diversa, il compilatore non potrà certamente effettuare
correzioni.
Per quanto riguarda i valori numerici nel sorgente, è
fortemente consigliato l'usare sempre i segni indicati per dichiarare
chiaramente il
modo in cui è espresso quel dato numero, anche se è stata fissata una radice generale.
|
|