|   
 
  Set di istruzioniIl set di istruzioni passa da 35 a più di 70, quindi è più che
raddoppiato, ma questo non provoca grossi problemi in quanto le nuove istruzioni
sono in parte identiche alle precedenti e le nuove sono assai pratiche.
 Come riassunto si può dire che i problemi di traslazione del sorgente
riguardano in generale :
 
  istruzioni con mnemonico e funzione analoga a quella dei PIC16, ma
    modificano i bit dello STATUS in modo diverso istruzioni con mnemonico e funzione nuovaistruzioni con mnemonico simile al nome utilizzato per macro oppure agli mnemonici delle pseudo istruzioni accettate dal MPASM Un primo punto riguarda la lunghezza delle istruzioni enhanced che è, di
  base, 16 bits. Quindi le istruzioni iniziano sempre in locazioni PARI e un salto ad un
  indirizzo programma dispari è errato.
 Questo è importante per chi ha l' abitudine di utilizzare il simbolo $ per
  puntare un salto.
 Ancor più imporatnte considerando che alcune istruzioni sono codificate su 4
  bytes.
 Un altro punto riguarda le istruzioni di rotazione che, nei mid-range,
  coinvolgono sempre il Carry (gli opcodes rlf e rrf).Negli enhanced, invece, sono disponibili due opcodes per ogni direzione della
  rotazione, ovvero :
 
    rrcf / rlcf  che agiscono come gli equivalenti rlf /rrfrrncf / rlncf che, invece, ruotano il registro oggetto SENZA
      coinvolgere il Carry Dunque una sostituzione diretta dei mid-range rlf / rrf è, per gli
  enghanced, rlcf / rrcf , dato che MPASM, compilando per un PIC18, indica gli
  eventuali opcodes rlf / rrf come errori. Un altro punto riguarda i diverso effetto delle istruzioni sullo STATUS.Le istruzioni di rotazione degli enhanced possono modificare un bit
  addizionale N non presente nello STATUS dei PIC16  altre, come i rotate
  modificano anche il bit Z, cosa che, invece, nei mid range non era possibile.
 Questo rende molto più ampia e flessibile la casistica dei test possibili, ma
  richiede di rivedere il sorgente per evitare risultati errati in comparazioni
  successive.
  La tabella seguente riporta alcune istruzioni
  comparate evidenziando le diverse risposte dei flag di STATUS: 
    
    
      
        | Istruzione | STATUS |  
        | 16F | 18F |  
        | ADDLW | C, DC,
          Z | C, DC, Z, OV,
          N |  
        | ADDWF | C, DC,
          Z | C, DC, Z, OV,
          N |  
        | ANDLW | Z | Z, N |  
        | ANDWF | Z | Z, N |  
        | COMF | Z | Z, N |  
        | DECF | Z | C, DC, Z, OV,
          N |  
        | INCF | Z | C, DC, Z, OV,
          N |  
        | IORLW | Z | Z, N |  
        | IORWF | Z | Z, N |  
        | MOVF | Z | Z, N |  
        | RETFIE | GIE | GIE/GIEH GIEL/PEIE
 |  
        | RLCF (RLF) | C, DC,
          Z | C, Z,
          N |  
        | RRCF (RRF)
 | C, DC,
          Z | C, Z,
          N |  
        | SUBLW | C, DC,
          Z | C, DC, Z, OV,
          N |  
        | SUBWF | C, DC,
          Z | C, DC, Z, OV,
          N |  
        | XORLW | Z | Z, N |  
        | XORWF | Z | Z, N |  Altre differenze riguardano il fatto che il registro WREG è realmente
  accessibile da tutte le istruzioni, quindi la NEGW è sostituita da una NEGF
  WREG. Esistono poi istruzioni del tutto assenti dal set a 14 bit: 
    BTG per l' inversione dello stato di un bit una serie di branch sui flag dello STATUS (BC, BNC, BZ, BNZ, BN, BNN,
      BOV, BNOV)una chiamata a subroutine "corta" RCALLMULWF e MULLW che effettuano una moltiplicazione 8 bit
      hardwareDAW per l' aggiustamento delle operazioni in BCDPUSH e POP per la manipolazione dello stackAlcune istruzioni per la manipolazione dei banchi e degli FSR (MOVLB,
      LFSR)8 istruzioni di lettura e scrittura delle tabelle4 comparazioni con skip tra WREG e un file2 istruzioni di incremento e decemento con skip se non-zeroLa MOVFF che sposta file to file nell' intera area di memoriaSUBFWB che sottrae f da WREG con borrow e SUBWFB
      che sottrae WREG da f con borrowTSTFSZ che testa se il file è a 0 Oltre a queste, sono abilitabili altre istruzioni del set detto
  "esteso" che assumono una certa imporatnza con il compilatore C. Un cenno particolare sarà dato più avanti al punto 2 e 6. Una sezione diversa dei tutorial è dedicata ad una analisi più
  approfondita del set di istruzioni a 16 bit.   
    
 |