4.1 Boot Viruses

Per comprendere come si sviluppa e si replica un virus di questo tipo è necessario capire tecnicamente cosa succede una volta acceso il computer, quando dopo i vari test del Bios viene caricato il sistema operativo. Dunque ci soffermeremo sul funzionamento generico del Bios alla fine dei Check iniziali e del funzionamento e della struttura del Boot, dando così nozioni sufficienti a chiunque di capire quello che sta dietro un Boot loader generico.

                          

Verranno poi discussi aspetti che riguardano più da vicino i Boot virus che, per quanto siano ormai leggermente superati con l'avvento dei sistemi operativi più recenti, sono alquanto interessanti e forse per certi versi più istruttivi di altri tipi di virus.


4.2 Il Bootstrap

Una volta fatti i vari test del 'mega', il Bios caricherà il sistema operativo tentando di leggere dal disco rigido il primo settore, quello caratterizzato dalla traccia 0, testina 0 e settore 1. I dati letti verranno messi all'indirizzo di memoria 0:7c00h.In caso non fosse possibile (ad esempio perché il disco rigido non è presente) il Bios andrà a leggersi il primo settore del disco floppy e cercherà ancora di metterlo in quella stessa zona di memoria. Naturalmente da Bios si può anche cambiare la sequenza di ricerca della periferica da usare per prima).

Letto un settore, il Bios controlla che l'ultima word del settore sia uguale a 0aa55h. Se questo valore corrisponde allora il Bios considera il Boot sector valido e quindi passa l'esecuzione all'indirizzo 0:7c00h, ovvero al settore di avvio appena caricato. Altrimenti c'è un disco non 'bootable'. Da qui in avanti tutto è in mano al codice del settore (del floppy o dell'HD) caricato.

Al momento del passaggio del Bios dell'esecuzione al Boot sector i registri possono contenere qualsiasi cosa, tranne il registro DL che contiene il numero drive dal quale è stato eseguito il Boot (questo valore è 0 se il caricamento è avvenuto dal disco rigido, 1 se da floppy). Una cosa che si trova in qualsiasi Boot è il settaggio dello stack di sistema in modo tale che non vada a cancellare il codice dello stesso Boot. In genere, dato che lo stack cresce verso il basso, si settano i registri SS e SP a 0:7c00h, evitando dunque problemi di sovrascrittura. Notiamo che fino a questo momento non è stato caricato ancora nessun sistema operativo, quindi le chiamate di sistema a disposizione sono limitate. Si possono comunque usare gli interrupt offerti dal Bios, facendo così diventare leggermente più complicata qualsiasi operazione il programmatore ha intenzione di applicare. Comunque oltre agli interrupt, nella stesura del codice, il Bios mette a disposizione alcune strutture, che si trovano al segmento di memoria 40h.


4.3 Struttura del Master Boot Record

            

Il primo settore del disco rigido viene chiamato master boot record (da qui in poi lo chiameremo mbr). Questa locazione contiene informazioni alquanto importanti. Infatti all'offset 01beh del settore c'è la tabella delle partizioni (la chiameremo pt) che contiene le informazioni della partizionatura del disco. Per come è strutturata, la pt può contenere al massimo 4 partizioni, ognuna delle quali è descritta da 10h byte. In questi sedici byte possiamo trovare dove la partizione inizia e dove finisce, quale sistema operativo è installato (ogni sistema dispone di un identificatore numerico) e se questa partizione è attiva. Il resto dell'mbr è codice che in base a un'interazione dell'utente se per esempio si sta usando un loader tipo LILO, o semplicemente la scelta della prima partizione attiva si si ha un tipico mbr MS-DOS, sceglierà la partizione dalla quale andare a leggere il primo settore, per poi caricarlo ed eseguirlo.

In genere il codice dell'mbr sarà copiato da qualche altra parte in memoria e poi sarà caricato il Boot sector della partizione scelta sul solito indirizzo 0:7c00h. Anche i parametri passati nei registri sono di norma gli stessi (DL settato al disco dal quale è stato eseguito il Boot) e dunque si può notare come l'operare sull'mbr o su un Boot della partizione è molto simile per certi versi.


4.4 Struttura del generico Boot

Il boot di una partizione contiene invece di solito il codice vero e proprio per lanciare il sistema operativo. Su questo settore possono essere anche presenti dati che riguardano il file system presente sulla partizione. In caso di un s.o. che usa la fat (file allocation table, la struttura dati che raccoglie informazioni sui settori che sono utilizzati e sullo spazio allocato ai file) qui si trova una serie di informazioni che la riguardano, precisamente dal terzo al trentunesimo byte. Ad esempio è indicato dove inizia, quanto è lunga. Essendoci dal terzo byte fino al trentunesimo, dati da conservare, dato che il codice viene dato all'inizio del settore una volta caricato, i primi due byte sono sempre un'operazione di salto oltre i suddetti dati.


4.5 Struttura del Boot floppy

La struttura del settore di Boot, del primo settore dunque, del floppy è praticamente la stessa della struttura del Boot di una partizione. E' chiaro che i dati riguardanti il file system sono differenti per le deverse capacità dei due supporti di memorizzazione.

                                                                  


4.6 Un esempio descrittivo

Per chiarire ulteriormente i concetti sopra esposti, sarà ora fornito un esempio pratico.Il codice è presentato come un piccolo loader che verrà messo al posto dell'mbr. Questo vi chiederà una password ed in caso di successo, caricherà normalmente l'mbr originale. In caso contrario aspetterà finché non verrà immessa la giusta password. 

In ciò che segue supponiamo che l'mbr originaria sia stata salvata sul settore 0, 0, 2. E' interessante infatti che la prima traccia intera, tranne il primo settore, dove c'è appunto il master boot, sia inutilizzata e quindi può venire tranquillamente usata.

Notiamo che è stato inserito un "cd13h" cioè un'istruzione di tipo "int 13h" all'indirizzo 0:7c00h-2. In questo modo verrà eseguita l'istruzione (che per come sono stati impostati i parametri, leggerà l'mbr originale) e poi il codice continuerà su 0:7c00h, ovvero dove sarà letta l'mbr. In questo modo si elimina la necessità di usare buffer aggiuntivi.

E' bene precisare che l'istruzione "int 16h" permette di accedere ai servizi della tastiera e "int 13h" al disco. Entrambi gli interrupt sono messi a disposizione dal Bios. Se poi si vuole mostrare una stringa si può usare l'"int 10h" che controlla i servizi video del Bios.Dopo che il codice è stato compilato, il tutto deve essere installato. Si può usare un 'disk editor' o anche dell'altro codice, inserito prima del Boot sector, quindi prima dell'istruzione "org 7c00h":

Questo codice legge il master boot record originale nel buffer e poi lo riscrive sul disco all'indirizzo fisico 0, 0, 2. Poi leggendo da CS:7c00h (dove si suppone ci sia il resto del codice) scrive il nuovo mbr. Da notare che quanto fatto sopra, non ricopia la tabella delle partizioni dall'mbr originale e quindi se si va a fare il Boot da floppy, il disco risulterà non avere alcuna partizione, non permettendo quindi di accedere alle strutture logiche del disco. Per risolvere il problema è necessario copiare esplicitamente la tabella sul nuovo settore appena creato. Inoltre bisogna notare che alcune zone del disco rigido, come la fat, possono essere spesso necessari e quindi si dovrebbe modificare il codice in modo che questi dati siano sempre disponibili. Infatti se qualche programma tipo "FDISK" andrebbe a leggere la partition table, non vi troverebbe nulla, essendoci in realtà il nuovo codice dell'mbr.


4.7 Boot virus                

Per comprendere il funzionamento di un Boot virus, è necessario analizzare la differenza tra i classici virus residenti nei file e quelli appunto residenti nei settori di avvio. Per questi ultimi c'è da dire che la difficoltà principale sta nel fatto che i servizi a disposizione sono alquanto limitati, dato che non è stato ancora caricato il sistema operativo. Un altro problema è quello della limitatezza dello spazio utile. Un settore è in genere lungo 512 byte e in tale spazio non può essere inserito molto codice. Comunque se il virus ha bisogno di più spazio, si possono usare ulteriori settori. Basta che questi siano indirizzati dal primo, che è l'unico che viene caricato dal Bios all'avvio.


4.8 Residenza  

Il primo problema che un virus di questo tipo deve affrontare, è come ingannare il sistema per introdursi in memoria. Al momento del Boot, come gia detto parecchie volte, non si ha a disposizione ancora il sistema operativo e quindi non si possono usare chiamate di sistema per andare in memoria, né fare manipolazioni di nessun genere. Un metodo classico è quello di diminuire la memoria disponibile al sistema vista dal Bios (e dunque da tutto quello che verrà caricato in seguito) dello spazio necessario, e mettere lì il virus. Il numero di Kilobyte di memoria disponibili (di solito 640 kb) si trova all'indirizzo 40h:13h, cioè tra i vari dati dello stesso Bios. Si può diminuire questo numero di quanto necessario e quindi per trovare l'indirizzo fisico dove copiare il virus, basta moltiplicare i restanti kb per 64. Esempio:

Alternativamente, anche se più rischioso, si può utilizzare lo spazio in memoria che non è utilizzato, oppure si può stare in tale spazio finché non parte il s.o.


4.9 Hooking delle chiamate

Una volta ottenuta la residenza in memoria, si presuppone che il virus voglia in qualche modo ricevere dei comandi che dipendano dal verificarsi o meno di particolari eventi. Per la riproduzione di un virus di Boot si vuole chiaramente fare un hooking (aggancio) verso chiamate a scritture / letture su dischetti o dischi che si vogliono infettare. A questo proposito, l'interrupt di sistema che gran parte dei programmi usa per eseguire questo compito, è classificato come "int 13h". Ricordiamo che gli interrupt sono eventi particolari che interrompono il normale flusso di esecuzione per gestire chiamate straordinarie che richiedono l'accesso a una periferica esterna. Sono interrupt l'immissione di un carattere da tastiera (abbiamo usato questo evento nei precedenti paragrafi, in cui abbiamo descritto la struttura di un loader), oppure l'accesso a disco. Per eseguire l'aggancio si fa qualcosa del genere:

Ovviamente il segmento e l'offset del gestore devono riferirsi a quello che è residente sulla memoria e non al codice all'indirizzo 0:7c00h che è stato caricato e che verrà probabilmente eliminato. Inoltre prima di eseguire il settaggio del nuovo gestore, il virus salverà quello vecchio, per passargli il comando una volta terminata l'esecuzione. Il virus deve ora controllare se l'utente sta leggendo o scrivendo su altri supporti bersaglio e se si, replica il codice.

Tra gli interrupt più interessanti per il programmatore disonesto, vi sono quelli che riguardano le letture o le scritture sul Boot sector del disco floppy. Comunque nell'eseguire i dovuti controlli è necessaria un po' di astuzia. Infatti intercettare tutte le letture su floppy per poi tentare una sua infezione, rende il tutto troppo ' visibile ', dato che per ogni file verranno eseguiti molti accessi. Comunque il programmatore è sicuro che il settore di avvio sarà letto almeno una volta, cioè quando si inserisce il dischetto, poiché il s.o. deve andare a leggere i dati che riguardano la fat. Comunque un buon virus deve limitare al massimo gli accessi in lettura sul supporto di memorizzazione per vedere se questo è gia infetto, e in special modo quando si ha a che fare con dispositivi lenti, primo fra tutti il floppy disk.


4.10 Lo scopo di ogni virus: l'infezione

                    

A questo punto l'infezione del disco rigido o del floppy è semplice. Una volta constatato che questo non è ancora infetto, (ci sono delle utility al proposito) il virus va a salvare il Boot oppure l'mbr, in base al tipo di contagio che vuole portare avanti, in qualche punto prestabilito. Se necessario si possono copiare i dati che vanno conservati (come la pt o i dati dello stesso settore di Boot) vicino al codice ospite e poi si va a porre il nuovo Boot sector così modificato al suo posto, in modo da impedire al sistema di rilevare eventuali anomalie che potrebbero insospettire l'utente.


4.11 Uno schema semplificativo

Dopo aver spiegato in dettaglio, servendoci di codice assembly,  come lavora un Boot virus, è bene chiarire i concetti anche attraverso uno schema grafico. Questo tipo di virus basa la sua attività su algoritmi che dipendono dall'avvio del sistema operativo, dovuto sia all'accensione del computer cosiddetta a freddo, che a un riavvio (re-boot) e iniziano a 'vivere' dopo che il sistema ha affrontato i necessari test hardware (controllo della memoria, dei dischi). Anche se in precedenza abbiamo parlato solo di floppy e dischi rigidi, bisogna dire che i virus dell'avvio interessano anche i CD-ROM, anche se in misura minore, visto che questo tipo di supporto è spesso a sola lettura e quindi difficile da contagiare. 

                                                                                       

Il codice nel primo settore, in caso normale, dovrebbe analizzare il BIOS Parameter Block (BPB), dovrebbe calcolare dove risiede la tabella del file system e eseguire altre operazioni di routine. Nel mondo Microsoft, particolare attenzione va posta ai file MSDOS.SYS e IO.SYS oppure IBMDOS.COM e IBMIO.COM o anche altri a seconda della versione DOS o Windows che si usa. Sono questi infatti i file di sistema caricati all'avvio della macchina e quindi facile preda di qualsiasi parassita. I dischi infetti sono particolarmente pericolosi perché in modo silenzioso vanno a sostituire il loro codice al posto del codice ' buono ' e ricevono il controllo perché fornitogli dal Bios.

L'infezione dell' hard disk può seguire tre strade differenti:

  1. un virus scrive se stesso al posto dell' mbr originale;
  2. scrive il proprio codice al posto del Boot sector del disco di avvio (normalmente il drive di avvio è denominato "C:" se si usa MS-DOS;
  3. modifica l'indirizzo del Boot sector attivo nel Disk Partition Table, situata sempre nell' mbr dell' hard disk drive.

Infettando il disco, nella maggioranza dei casi, sposta il Boot sector (o l'mbr) originale in qualche atro settore del disco (per esempio nel primo settore libero). Se la misura del virus eccede la misura del settore, allora il settore target conterrà solo la prima parte del virus, il resto è posto in altri settore (per esempio nei primi tra quelli non occupati): 

  Not infected disk
     0     1     2      . . . (sector No)
 +-----+-----+-----+---   --+-----+-----+-----+-----+-----+---
 |.....|     |     |        |     |     |     |     |     |
 +-----+-----+-----+---   --+-----+-----+-----+-----+-----+---
    |
    +--  Boot sector  or  Master Boot Record

 
Infected disk  (replaced boot / MBR)
     0     1     2      . . .
 +-----+-----+-----+---   --+-----+-----+-----+-----+-----+---
 |XXXXX|     |     |        |     |.....|XXXXX|XXXXX|XXXXX|
 +-----+-----+-----+---   --+-----+-----+-----+-----+-----+---
    |                                |     |     | ... |
    +--  Virus top                   | +---+-----+-----+
                                     | +--  The rest of virus
                                     |
                                     +-- Original Boot or Master Boot Record


 
Infected disk  (modified address of active boot sector)
     0     1     2      . . .
 +-----+-----+-----+---   --+-----+-----+-----+-----+---
 |....X|     |     |        |     |XXXXX|XXXXX|XXXXX|
 +-----+-----+-----+---   --+-----+-----+-----+-----+---
      |                            ^ |     | ... |
      +--  Modified         -------+ +-----+-----+
           Disk Partition Table      +--  Main virus code


Parecchie opzioni permettono di scrivere insieme, con continuità, il Boot sector del disco e il virus: nei settori dei cluster liberi di un drive logico, nei non usati (oppure usati di rado) settori di sistema, oppure nei settori 'off-limits' del drive. Se il virus continua a entrare nei settori che appartengono a cluster liberi del disco (questa ricerca può essere condotta con una superficiale analisi della fat), allora la regola di base è di marcare questi settori come danneggiati (pseudo-bad clusters). Questo è il metodo usato da virus come "Brain", "Ping-Pong" e molti altri. Un altro metodo è usato nella famiglia dei virus "Stoned". Questi virus pongono il Boot sector originale in un settore usato poco, che può essere uno dei settori dell' hard disk (se disponibile), posto tra l'mbr e il primo settore di avvio, oppure su qualcuno degli ultimi settori della root directory di un dischetto.

Il metodo di salvare il resto del virus fuori dal disco è spesso usato nella realtà. Può essere fatto in due modi. Nel primo caso si può abbassare la misura dei drive logici: i virus sottraggono i numeri necessari dai campi corrispondenti del BPB Boot sector e dalla tavola delle partizioni dell' hard disk (sempre che questo sia stato infettato), poi abbassano la 'size' del drive logico e registrano il loro codice nei settori tagliati fuori.

Con il secondo metodo si registrano dati fuori alle partizioni fisiche del disco. Esistono anche virus che scrivono il loro codice fuori dai bordi dello spazio disponibile dell' hard disk, naturalmente se questo è permesso dall' hardware. Naturalmente esistono anche altri metodi di posizionare un virus su un disco. Ad esempio i virus della famiglia "Asuza" contengono un MBR loader standard nel loro corpo e dopo aver portato avanti l'infezione, scrivono se stessi sull'mbr originale, senza salvarlo da nessuna parte.

Ribadiamo ancora che la maggioranza dei virus copia le informazioni di sistema del loader originale, all'interno del codice del proprio loader. In caso contrario il sistema non potrà partire, poiché gli indirizzi del disco del sistema sono stati calcolati in accordo a queste informazioni. Questo tipo di virus è semplice da cancellare. Basta sovrascrivere il codice del loader del sistema nel Boot sector e nell'mbr. Serve all'uopo un dischetto compatibile non infetto con il quale riavviare il computer. In MS-DOS si può usare il comando "SYS" per creare un dischetto di avvio e il comando "FDISK / MBR" è utile per 'curare' le infezioni del master boot record.

E' utile menzionare che i Boot virus raramente coesistono con un solo disco. Spesso usano gli stessi settori del disco per porre codice e dati. I virus di Boot possono creare parecchi problemi anche agli utenti dei nuovo sistemi operativi (Novell, Windows, OS/2). Nonostante questi sistemi lavorino direttamente con dischi e dunque possono bloccare il virus prima che questo esploda, il codice qualche volta, anche se in pochi casi, riceve il controllo dopo il riavvio della macchina. Questo spiega come il virus "March6" (Michelangelo) possa vivere nell' mbr del server e non influenzare le operazioni e la produttività dello stesso server, in nessun modo. Naturalmente se vi è un riavvio accidentale nel sesto giorno di marzo, il virus distruggerà tutti i dati sul disco.


4.12 L'Algoritmo operante         

Per comprendere ulteriormente lo stato delle cose, possiamo sintetizzare le operazioni intraprese da un virus in una procedura. Virtualmente tutti i virus di Boot sono residenti in memoria. Essi si infiltrano nella memoria del computer dopo un avvio da disco infetto. In questo processo, il loader di sistema legge il contenuto del primo settore , pone le informazioni ottenute in memoria e da il controllo a quest'ultima (quindi al virus). Dopo che le istruzioni del virus sono mandate in esecuzione, succede quanto segue:

  1. il virus copia se stesso sulla memoria libera (una word all'indirizzo 0040:0013) e legge il resto dal disco (se c'è). Inoltre alcuni virus aspettano che il s.o. carichi e ripristini questa word al suo valore originale. Quindi alla fine essi saranno posti non all'esterno del sistema, bensì come blocchi separati della memoria.
  2. intercettati i necessari vettori di interrupt (spesso "int 13h"), il virus legge il Boot sector originale in memoria e passa il controllo ad esso. 

Più tardi, il virus si comporta proprio come un virus residente in un file. Intercetta le chiamate di sistema verso i dischi e li infetta. Queste azioni dipendono da talune circostanze. I virus possono decidere di comportarsi in modo distruttivo, ma possono anche limitarsi a produrre effetti sonori o mandare un esecuzione un video. Comunque esistono anche virus di Boot non residenti. All'avvio infettano l'mbr dell' hard disk e dei dischetti presenti nel floppy drive(s). Poi tali virus passano il controllo al loader primitivo e vanno ad influenzare le operazioni del computer.


4.13 Salvataggio e ripristino del Boot / mbr originale

                                                      

Nel precedente paragrafo abbiamo stabilito che il codice dannoso deve copiare i dati del settore originario in qualche punto. Una domanda ovvia è allora dove andare a salvare il Boot / mbr originale ed eventualmente pezzi di virus, in caso questo non entri in un solo settore. Il problema non si pone con i dischi rigidi, poiché, come abbiamo detto in precedenza,  quantomeno si ha a disposizione tutta la prima traccia, tranne il primo settore, e dunque lo spazio non dovrebbe mancare. Quando ci si trova su floppy, non si può disporre di tale spazio. Le tecniche che i comuni virus usano in questo caso sono varie:

  1. si scrive il virus alla fine della root directory (la struttura che contiene le sottostrutture delle directory e dei file presenti). Essendo questa disposta ad ospitare un gran numero di file, che in genere non ci sono, ha spesso dello spazio inutilizzato alla fine.
  2. si scrive il virus in un settore qualsiasi del disco (scelto magari a caso). Dopodiché si vanno a segnare quei settori come danneggiati nella fat. In questo caso il sistema operativo si limiterà ad ignorare semplicemente i dati scritti, e non effettuerà controlli su di essi, né tanto meno andrà a sovrascriverli.
  3. se è presente una fat secondaria, è possibile porre lì i dati virus, essendo questa spesso inutilizzata. Si può anche ' far credere ' al floppy che ve né è una sola cambiando i dati negli spesso citati primi byte del Boot, ma in questo caso è difficile che programmi diagnostici passino oltre, senza rilevare l'inganno.
  4. si può scrivere il codice da qualche parte del floppy, che secondo alcune stime, può essere vuota. Spesso è presa di mira l'ultima traccia, ma per esserne sicuri occorre fare un check della fat.
  5. alcuni virus eseguono una formattazione di una traccia extra e vanno a copiare se stessi nello spazio appena liberato, essendo così sicuri di non essere sovrascritti.

La scelta della tecnica usata dipende dalla sicurezza che il programmatore vuole, che il suo sorgente non venga sorvascritto da altre cose, tutto questo a costo di codice aggiuntivo, che ovviamente rende il tutto meno nascosto.

L'ultima precisazione va fatta a proposito del ripristino del settore di origine. Infatti dopo che il virus è stato caricato in memoria come sperava, si va a rileggere all'indirizzo 0:7c00h il settore primitivo e gli viene passato di nuovo il controllo, rendendo di nuovo le cose trasparenti.


4.14 Stealth

Ricordiamo che lo stealth è una tecnica che permettere a un virus di non farsi rintracciare. Per i virus di Boot questo è alquanto semplice. Infatti nel codice è inserito un gestore di interrupt che verifica le eventuali operazioni di lettura o scrittura del settore oramai infetto. In questo caso si mette a punto la redirezione verso il Boot sector vecchio che è sempre bene salvare da qualche parte. Si possono ad esempio modificare i registri CX e DX che contengono le informazioni sul settore da leggere prima di passare alla chiamata originale.


4.15 Problemi con la scrittura dell'mbr

                                   

Un tipico problema che un virus evoluto deve affrontare, è proprio la scrittura dell'mbr. Infatti i costruttori di moderne schede madri inseriscono delle protezioni in scrittura nel Bios. In realtà questo non è un ostacolo insormontabile e per la verità non fa altro che dare una finestra nel caso qualcuno tenti di scrivere sull'mbr usando l'interrupt "int 13h". Ad esempio usando il comando MS-DOS "fdisk" con l'opzione "/MBR" per riscrivere il contenuto del primo settore con il codice predefinito compare una riga di "Warning" che si limita ad avvertire che si sta tentando di scrivere sull'mbr e chiede conferma nel caso si voglia continuare l'operazione. I virus saltano questa protezione usando due modi standard:

  1. si scrive su disco usando le porte invece che con un interrupt. E' un modo piuttosto elegante di procedere e richiede poco spazio. Tuttavia è incompatibile con dischi con interfaccia SCSI.
  2. si disabilita la protezione del Bios. Va fatto ancora con porte, ma cambia a seconda del costruttore. Comunque è una soluzione che richiede spazio.

4.16 Le Junk instruction

Per ingannare i prodotti antivirus, i codici virali possiedono al loro interno istruzioni che di per se non hanno importanza, ma servono a camuffare la vera intenzione del programma. Come altri virus, anche quelli di Boot fanno uso di questa tecnica. Queste istruzioni 'fantoccio' sono di vario tipo e di seguito è riportata una lista abbastanza completa:

- si aggiunge il valore "0" a un registro a 16 bit

- si toglie il valore "0" a un registro a 16 bit

- stesse di prima ma su registri a 8 bit

- operazioni "PUSH" e "POP" poste una dietro l'altra

- si carica un registro a 16 bit con sé stesso

- si carica un registro a16 bit con sé stesso

- stesse di prima ma su registri a 8 bit

- si possono fare salti condizionati inutili (zero salti)

Naturalmente la lista potrebbe continuare, seguendo lo schema sopra riportato.