| 
    
      
        | Esercitazioni
          PIC - Assembly |  
 La struttura del sorgente
  
    
      |  L' Assembly, tipicamente, si basa su una struttura a linee: ogni linea ha un valore
        proprio. |  Per 
  MPASM la lunghezza massima di una linea è 255 caratteri (spazi compresi).  Una
  linea può contenere: 
    
      una istruzione del set proprio del microcontroller usato (opcode)
      con i relativi operandi (se richiesti)
      una label
      un commento
      una direttiva dell' Assembler
      una macroistruzione Se prendiamo un semplicissimo testo sorgente come esempio: 
    
      
        | ; Esempio di programma per
          microcontroller PIC 
 list  p=16f876             
          ;definizione del
          processore
 #include  p16f876.inc      
          ;include definizioni relative
 
 __config _WDT_OFF
          & _BODEN_ON & _HS_OSC & _LVP_OFF
 
 Dest  equ 0x0B                
          ;definizione di una costante
 
 org 0x0000              
          ;vettore di reset
 goto
          Start
 
 org 0x0020              
          ;inizio programma
 Start movlw   
          0x0A
 andlw    Dest,f
 bcf      Dest, 3
 goto     Start
 end
 |  La sua struttura è questa: 
    
    
      
        | label|
 | opcodedirettive
 macro
 |
 | operandi|
 | commento|
 |  
        | ; Esempio di programma per
          microcontroller PIC
         |  
        |  | 
          riga
          vuota
         |  |  |  
        |  | list  p=16f876 #include  p16f876.inc
 |  | ;definizione del
          processore ;include definizioni relative
 |  
        |  |         
          riga
          vuota |  |  |  
        |  | __config _WDT_OFF
          & _BODEN_ON & _HS_OSC & _LVP_OFF |  
        |  | riga
          vuota |  |  |  
        | Dest | equ 0x0B |  | ;definizione di una costante |  
        |  | 
          riga
          vuota |  |  |  
        |  | org 0x0000 |  | ;vettore di reset |  
        |  | goto | Start |  |  
        |  | riga
          vuota |  |  |  
        |  | org 0x0020 |  | ;inizio programma |  
        | Start | movlw andlw
 bcf
 goto
 | 0x0A Dest,f
 Dest, 3
 Start
 |  |  
        |  | end |  |  |  Va notato che una riga può contenere un singolo elemento, come l' ultima,
  ma anche più elementi, come la terza. E' importante, però, avere chiaro che
  ogni linea ha un valore di per se e deve essere scritta seguendo rigidamente
  le regole, che sono poche e semplici, ma la violazione delle quali non viene
  perdonata dall' Assembler, che le individuerà segnalando spietatamente anche
  il più piccolo errore sintattico o di uso.Quindi, spazi, tab, segni particolari come  : o  ; non sono a caso, ma secondo
  le regole.
 Tuttavia questo non impedisce di dare al testo una forma gradevole e nello
  stesso tempo ordinata, il che facilita di molto la rilettura.
 
 E' possibile inserire anche righe completamente vuote nel sorgente, per
  formare spazi nella stampa della lista oppure anche utilizzare comandi dell'
  Assembler per formattare la lista (salto pagina, abilitazione e
  disabilitazione di parti della lista, ecc.).
 
 Elementi del sorgenteDall' esempio che stiamo considerando, si nota che un testo previsto per la
  compilazione assembler di un programma per processori PIC tipicamente prevede
  alcuni elementi fissi: 
    intestazione e descrizione (commenti)definizione del processoreinclude delle label relativeconfiguration bytesdefinizione di costanti, variabili, RAM, ecc.posizionamento al vettore di resetistruzioni del programmachiusura della compilazione Anche se normalmente si aggiungeranno commenti, strutture di
  condizionamento della compilazione, include di file esterni, ecc., i 7 punti
  qui sopra sono indispensabili in qualsiasi sorgente.La loro sequenza logica è quella in cui sono scritti nel testo sorgente.
 Li
  ritroviamo anche nell' esempio che stiamo utilizzando. Vediamo ora maggiori
  dettagli.  
       
   
  
 |