Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Schede del Tutorial

Home » Programma il Computer » Tutorial Assembly

Le Schede del Tutorial

  Numeri e Logica Binaria

SCHEDA n° 09 [ 4  di 20] 

    

    Numeri senza segno: la somma aritmetica
     
bulletCominciamo con il considerare senza segno i numeri binari della tabella precedente; come detto, se formattati a 8 bit (cioè della dimensione di un Byte) il loro valore va da 00000000 (0) a 11111111 (255).

      

bulletVediamo in che modo possiamo esercitare su di essi le 4 operazioni; devo sottolineare che questo compito è svolto in maniera egregia da qualunque processore, per cui sembra inutile accanirsi a capire tecniche che nessuno di noi metterà realmente in pratica...
bulletTuttavia ammetto che la lettura di questi esempi può aiutare a capire i meccanismi effettivamente attivati dai processori stessi; del resto questi ultimi sono nostre creature e dovranno obbedire a criteri ormai consolidati, se pur in binario...

      

bulletCosì la somma aritmetica binaria non è poi molto diversa da quella decimale; le cifre dei due addendi sono sommate colonna dopo colonna, tenendo conto dell'eventuale riporto, da sommare con gli eventuali operandi della colonna adiacente a sinistra.
bulletLa regola da applicare a ciascuna colonna è, nei 4 casi possibili:

      

Binario

Decimale

 0+0= 0 con riporto di 0

 0+0= 0 (00)2

 0+1= 1 con riporto di 0
 

 0+1= 1 (01)2

 1+0= 1 con riporto di 0

 1+0= 1 (01)2

 1+1= 0 con riporto di 1

 1+1= 2 (10)2

      

bulletLa "traduzione" decimale della tabella mostra che l'ultima somma (1+1), dovendo dare 2 come risultato, lascerà le "unità" a 0 e proporrà un riporto da aggiungere alle "decine" (la colonna adiacente a sinistra) per garantire il risultato binario atteso, (10)2 (naturalmente i termini "unità" e "decine" sono del tutto figurati..).
bulletVediamo alcuni esempi:

      

Binario

Decimale

R    ...  
     100 +
      11 =
----------
     111

           
     4 +
     3 =
----------
     7

      

Binario

Decimale

R    1..  
     110 +
      11 =
----------
    1001

           
     6 +
     3 =
----------
     9

      

Binario

Decimale

R   111.  
    1101 +
      11 =
----------
   10000

           
    13 +
     3 =
----------
    16

      

bulletDa notare che i processori eseguono questo compito in pochi nanosecondi, con numeri a 8, 16, 32 bit, ..., senza batter ciglio (da qui l'assurdità di perdere ulteriore tempo con queste pratiche ancestrali...); il processore 80x86 prevede 2 istruzioni specifiche, la ADD (Addizione aritmetica tra numeri interi) e la ADC (Addizione aritmetica tra numeri interi, con riporto).

      

bulletSe la somma viene operata con dati formattati (per esempio a 8 bit) può succedere che il risultato non sia attendibile; l'errore si manifesta quando, sommando i bit più significativi (quelli della colonna più a sinistra), si verifica la necessità di generare un riporto:

      

Binario

Decimale

R1........ 
  11101010+
  10000000=
  ---------
  01101010

           
   234 +
   128 =
----------
   106 (
?!)

      

bulletLa cosa è assolutamente logica: la somma dei due addendi darebbe risultato 362 decimale, che in binario ha bisogno di 9 bit, 101101010, provocando un overflow, cioè un trabocco dei limiti consentiti; infatti, poichè i bit sono solamente 8, il risultato viene troncato a 01101010, pari a 106 decimale, esattamente la differenza tra 362 (il risultato decimale atteso) e 256 (il peso del mancante nono bit).

      

bulletPer ovviare a questo inconveniente i costruttori di processori hanno previsto un particolare bit (flag Carry) che assume comunque il valore del riporto della somma di numeri binari della stessa dimensione.

      

bulletQuesto bit (insieme ad altri dello stesso tipo) è conservato in un particolare Registro del processore 80x86, facilmente consultabile, per consentire al programmatore assembly di prendere (eventualmente) i provvedimenti del caso.

      

bulletIn ultimo possiamo mostrare la Tabella di Verità di una somma aritmetica tra 2 numeri da 1 bit ciascuno:

      

A B Somma Riporto
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

    

Pagina Precedente Scheda n° 09 Pagina Successiva Numeri e Logica Binaria Torna al Menu delle Schede del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
Scheda n° 09 -  4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

    

SCHEDE » 1.Header EXE 2.PseudoOp MASM 3.Differenza tra Macro e Procedure
4.
Tabella Vettori 5.PSP 6.Stack 7.Istruzioni 80x86
8.La misura dell'Informazione 9.Numeri e Logica Binaria
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati