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

    

    Numeri Binari con segno
     
bulletNell'aritmetica binaria i numeri binari con segno sono esteticamente uguali ai numeri binari senza segno; qualunque sia la dimensione del dato, Nibble (4 Bit) o Byte (8 Bit) o Word (16 Bit), ..., la differenza sta nel fatto che:
bulletil bit più significativo è riservato al segno, inteso positivo (+) se 0 e negativo (-) se 1
bulleti rimanenti bit sono da interpretare in modo normale se positivo o in complemento a 2, se negativo

      

bulletIl meccanismo del complemento a 2 (o sottrazione da zero) è molto semplice:
bulletsi complementa l'operando, bit dopo bit.
bulletsi somma 1 al risultato

      

01H = 000 0001
----------------
CPL   111 1110 +
             1 =
     ---------
7FH = 111 1111 

02H000 0010
-----------------
CPL    111 1101 +
              1 =
      ---------
7EH =  111 1110 
....... 7FH111 1111
-----------------
CPL    000 0000 +
              1 =
      ---------
01H =  000 0001 

      

bulletPer inciso il processore 80x86 dispone dell'istruzione NEG ha il compito di calcolare il complemento a 2 del suo operando.

      

bulletOsserviamo il valore dei numeri binari a 8 bit (Byte) e la loro equivalenza decimale senza e con segno:

      

Dato a 8 Bit Senza Segno Con Segno

Binario

Esad Decimale Segno Valore Comp.a 2 Decim

00000000

00H 0

0

000 0000

 

+  0
00000001 01H 1 0 000 0001   +  1
00000010 02H 2 0 000 0010   +  2
........ ...      . ........ ........ ........ .
01111101 7DH 125 0 111 1101   + 125
01111110 7EH 126 0 111 1110   + 126
01111111 7FH 127 0 111 1111   + 127

10000000

80H 128

1

000 0000

 

- 128
10000001 81H 129 1 000 0001 111 1111 - 127
10000010 82H 130 1 000 0010 111 1110 - 126
........ ... . ........ ........ ........ .
11111101 FDH 253 1 111 1101 000 0011 -  3
11111110 FEH 254 1 111 1110 000 0010 -  2
11111111 FFH 255 1 111 1111 000 0001 -  1

      

bulletDa notare che il numero binario 80H non può essere rappresentato con un numero a 8 bit con segno; se tentiamo di applicare la regola del complemento a 2 la sua parte eccedente il segno, 000 0000, complementata diventa 111 1111 e, dopo aver aggiunto 1,  diventa di nuovo 000 0000 !
bulletDel resto, se l'operando è il massimo valore negativo (per esempio - 128=80H o - 32768=8000H), anche l'istruzione NEG non ha effetto e lascia la flag O (Overflow) a 1.

      

bulletDunque i numeri binari a 8 bit (Byte) con segno:
bulletda 00H (00000000) a 7FH (01111111) sono positivi, e vanno da 0 a + 127
bulletda 80H (10000000) a FFH (11111111) sono negativi e vanno da - 128 a - 1

      

bulletI numeri binari a 16 bit (Word) con segno:
bulletda 0000H (0000000000000000) a 7FFFH (0111111111111111) sono positivi, e vanno da 0 a + 32767
bulletda 8000H (1000000000000000) a FFFFH (1111111111111111) sono negativi e vanno da - 32768 a - 1

      

bulletI numeri binari a 32 bit (DoubleWord) con segno:
bulletda 00000000H a 7FFFFFFFH sono positivi, e vanno da 0 a + 2147483647
bulletda 80000000H a FFFFFFFFH sono negativi e vanno da - 2147483648 a - 1

      

bulletUn curioso problema può nascere quando desideriamo cambiare formato ad un numero binario con segno; per raddoppiare la sua dimensione è necessario aggiungere una quantità di bit pari alla sua attuale dimensione, tutti uguali al bit di segno; per esempio:
bulletper convertire un Byte con segno (8 bit) in una Word con segno (16 bit), se il bit7 del Byte è a 1 (negativo) antepone un byte uguale a FFH; se invece è a 0 (positivo) antepone un byte uguale a 00H
bulletper convertire una Word con segno (16 bit) in una DoubleWord con segno (32 bit), se il bit15 del Byte è a 1 (negativo) antepone una word uguale a FFFFH; se invece è a 0 (positivo) antepone una word uguale a 0000H

      

bulletIl processore 80x86 dispone di alcune specifiche istruzioni adatte a convertire il formato dei numeri con segno:
bullet CBW per convertire un Byte (8 bit) in una Word (16 bit)
bullet CWD e CWDE per convertire una Word (16 bit) in una DoubleWord (32 bit)
bullet CDQ per convertire una DoubleWord (32 bit) in una QuadWord (64 bit)

      

bulletSpecificatamente per operazioni aritmetiche con segno il processore 80x86 prevede anche le istruzioni:
bullet IMUL, moltiplicazione tra numeri Interi con segno
bullet IDIV, divisione tra numeri Interi con segno

    

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