Sezione |
Indirizzi Base
Registri Interni
|
Schede del Tutorial |
Numeri e Logica Binaria |
SCHEDA n° 09 [ 7 di 20] |
|
|
Nell'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:
|
|
Il meccanismo del
complemento a 2 (o sottrazione da zero)
è molto semplice:
|
|
01H = 000 0001 |
02H = 000 0010 ----------------- CPL 111 1101 + 1 = --------- 7EH = 111 1110 |
....... |
7FH
= 111 1111 ----------------- CPL 000 0000 + 1 = --------- 01H = 000 0001 |
|
Per inciso il processore 80x86 dispone dell'istruzione NEG ha il compito di calcolare il complemento a 2 del suo operando. |
|
Osserviamo 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 |
|
Da 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 ! | |
Del 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. |
|
Dunque i numeri binari a 8 bit
(Byte)
con segno:
|
|
I numeri binari a
16 bit
(Word)
con segno:
|
|
I numeri binari a
32 bit
(DoubleWord)
con segno:
|
|
Un 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:
|
|
Il processore 80x86 dispone di alcune specifiche istruzioni
adatte a
convertire
il formato dei
numeri
con segno:
|
|
Specificatamente per operazioni
aritmetiche con
segno il processore 80x86 prevede anche le
istruzioni:
|
|
Scheda n° 09 | Numeri e Logica Binaria | |||||||
Scheda n° 09 - 7 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|