Tutorials - PIC - Corso A&C

 

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:

         radix [dec][hex][oct]

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.

 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 03/12/18.