www.spartan.3000.it  ASSEMBLER HOME PAGE ASSEMBLER  www.spartan.da.ru 

 ASSEMBLER  Lezione 1 Lezione 2 Lezione 3 Lezione 4 Lezione 6 Lezione 7 Lezione 8  ASSEMBLER 

LEZIONE 5




  Il sistema binario possiede una sua logica chiamata algebra booleana, che è simile alla nostra algebra, ma che agisce su solo due cifre invece che le nostre 10 (0-9). L'addizione si esegue in modo uguale, per esempio:

      1011b +
      0110b =
10001b

ovvero 1+1=0 con riporto di 1 non esistendo il 2.

Stesso dicasi per le altre operazioni. Ma l'algebra booleana possiede altre funzioni più interessanti e non disponibili con altri sistemi. Per esempio la funzione AND che dati due numeri esegue il confronto bit per bit del primo numero col secondo. Per esempio:

         1001b AND
    1100b =
1000b

Ovvero solo se entrambi i bit sono a 1 il risultato è 1, negli altri casi è 0.
Supponete di avere ottenuto il risultato di un calcolo e che questo sia 10110110b, ora non mi serve il risultato complessivo, ma solo i primi 4 bit, bene basta fare AND 00001111b ed avrò estratto solo i primi 4 bit. Un'altra funzione interessante è l'OR che funziona come AND, ma dà risultato 1 se almeno uno dei due bit è a 1.
Un OR più drastico è lo XOR che richiede che uno ed uno solo dei due bit sia ad 1 per dare 1 altrimenti ritorna 0.

Il registro F denominato FLAG (in inglese bandiera) si comporta come una bandiera che può essere alzata o abbassata a seconda delle condizioni, anzi 16 bandiere perché il registro F è a 16 bit, ed ogni bit rappresenta una situazione.
Prendiamo il sequente pezzo di codice:

MOV CX, 2 - carica 2 nel registro CX

DEC CX - decrementa il registro CX di 1, CX=CX-1

DEC CX - decrementa di nuovo il registro

Cos'è successo dopo il secondo decremento?, che CX è diventato zero, la CPU giustamente se ne accorge e pone a 1 il bit corrispondente in F che si chiama bit di zero, quindi se io volessi controllare se un'operazione ha dato zero come risultato mi basta controllare questo flag, esiste anche il flag di carry che segnala se in una sottrazione c'è stato prestito, un altro chiamato flag di overflow che segnala se l'operazione ha ecceduto la capacità del registro, il flag di segno che segnala se il sedicesimo bit è ad 1, poiché in alcuni casi i registri vengono considerati a 15 bit e negativi o positivi, e quindi il sedicesimo bit è zero se positivo e 1 se negativo. Esiste anche il flag di direzione che indica se i registri SI e DI devono incrementarsi o decrementarsi in seguito ad alcune istruzioni di lettura scrittura in memoria.



 
 




@2ooo-2oo1 SPARTAN