| 
    
      
        | Esercitazioni
          PIC - Assembly |  
 Come sono rappresentati i numeri in Assembly
  Assembly accetta numeri in formato: 
          dec  decimalehex  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. |  
  
 |