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 [ 20  di 20] 

    

    Numeri Binari organizzati: Codice BCD o Codice 8421
     
bulletIl Codice BCD (Binary Coded Decimal, codifica binaria dei simboli decimali) è formato da 10 parole, ciascuna delle quali utilizza 4 bit (un nibble) per codificare ciascun simbolo del Sistema di numerazione Decimale:

      

BCD

Binario

Decimale

    0000

    0000

     0
    0001     0001      1
    0010     0010      2
    0011     0011      3
    0100     0100      4
    0101     0101      5
    0110     0110      6
    0111     0111      7
    1000     1000      8
    1001     1001      9

      

bulletIl Codice BCD sembra apparentemente uguale al Codice Binario Puro a 4 bit, ma non è la stessa cosa! La differenza sta nel fatto che il primo utilizza solo le prime 10 quaterne di bit del secondo.

      

bulletSi tratta per questa ragione di un codice ridondante, che non ammette tra le sue parole le possibili rimanenti 6 combinazioni.
bulletInoltre è un codice pesato, secondo la sequenza di pesi classica 8421, da sinistra a destra; per questa caratteristica è noto anche con il nome di Codice 8421.

 

Suggerimento In generale è importante capire che gli 8 bit di un Codice Binario Puro a 8 bit non sono la stessa cosa degli 8 bit espressi con le parole di un codice.

 

bulletQuesto vale a maggior ragione per il Codice BCD, data la sua apparente uguaglianza con il Codice Binario Puro a 4 bit:
bulletcon 8 bit di Codice Binario Puro a 8 bit possiamo rappresentare tutti i numeri decimali da 0 a 255
bulletcon 8 bit di Codice BCD possiamo rappresentare tutti i numeri decimali da 0 a 99

     

bulletAbbiamo imparato che l'informazione binaria, così com'è, è difficile da intendere in modo decimale; la scrittura di un'informazione in BCD tende a superare questa difficoltà, proponendo direttamente le singole cifre decimali, e mettendo in sequenza le rispettive quaterne di bit, come in questo esempio:

      

(10010011)BCD = (93)10

      

bulletE' facile verificare che le 2 parole BCD (1001)BCD e (0011)BCD corrispondono rispettivamente ai simboli decimali (9)10 e (3)10; questa possibilità ne giustifica la fama e la diffusa applicazione, specialmente nella codifica delle informazioni da porre su visualizzatori (in generale).

      

bulletLa codifica di questo esempio è detta impacchettata (BCD packed) perchè nel medesimo bytes trovano ospitalità entrambe le parole del codice; con un byte BCD impacchettato possiamo esprimere al massimo il numero decimale 99; con questa ogni parola (cioè ogni cifra decimale) occupa lo spazio di un nibble (mezzo byte).
bulletLa gestione di informazioni BCD packed è però poco pratica, per cui di solito si provvede a ...spacchettarle: tutte le quaterne di bit BCD vengono trasformate in byte del tipo (0X), con X ovviamente compreso tra 0  e  9; il byte BCD packed dell'esempio precedente diventa, con codifica BCD unpacked:

      

(10010011)BCD packed = (00001001)(00000011)BCD unpacked = (93)10

      

bulletLa disponibilità di bytes BCD unpacked rende facile, per esempio, la conversione da BCD ad Ascii; i caratteri Ascii numerici hanno infatti codici binari nell'intervallo 30H÷39H="9"÷"0", per cui per ottenerli a partire dai (00000000(00001001)BCD unpacked basta aggiungere 30H.

      

bulletMa torniamo per un attimo sull'espressione binaria di partenza: lo stesso numero in binario (2 nibble) avrebbe dato un altro risultato:

      

(10010011)2 = (147)10

      

bulletQuesto esempio mostra, nella codifica di un numero decimale, anche scarsa compattezza delle espressioni BCD rispetto a quelle binarie pure e, al tempo stesso, la necessità di un numero di bit decisamente superiore; per rimanere nell'esempio precedente notiamo che per esprimere il numero 147 servono ben 12 bit (che, in realtà, diventano 16 se, come in questo caso, il numero decimale ha un numero dispari di cifre: per formattare il dato binario alla misura minima del byte, è necessario aggiungere davanti altri 4 bit a 0):

      

(0000000101000111)BCD packed  = (147)10
(00000001)(00000100)(00000111)BCD unpacked  = (147)10

      

bulletPer finire si provi a pensare cosa succede se si presenta la necessità di operare aritmeticamente numeri in BCD; la dichiarata ridondanza del codice rende inapplicabili le tecniche utilizzate con i numeri binari puri.

      

bulletData la assoluta paranoia di questo discorso mi rifiuto categoricamente di affrontarlo, anche perchè i processori moderni eseguono automaticamente le correzioni logiche necessarie, con l'aiuto di potenti istruzioni dedicate.

      

bulletIl processore 80x86 prevede ben 6 istruzioni per questo scopo:

      

PseudoOp  Descrizione
AAA
AAD
AAM
AAS
DAA
DAS
Aggiustamento Ascii dopo l'Addizione
Aggiustamento Ascii prima della Divisione
Aggiustamento Ascii dopo la Moltiplicazione
Aggiustamento Ascii dopo la Sottrazione
Aggiustamento Decimale dopo l'Addizione
Aggiustamento Decimale dopo la Sottrazione

    

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 -  20
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