- Comprendere la codifica dei numeri interi relativi in formato binario
- Eseguire la trasformazione di un numero decimale negativo in complemento a due
- Analizzare il comportamento dei registri della CPU in presenza di numeri negativi
- Interpretare correttamente il bit di segno (MSB) nei registri a 8 e 16 bit
All'interno di una CPU non esiste un simbolo grafico per il segno meno (-). Tutto deve essere rappresentato tramite 0 e 1. Il metodo universale utilizzato dall'architettura x86 è il Complemento a Due.
Il Bit di Segno (MSB): In una sequenza di 8 bit (un byte), il bit più a sinistra è chiamato MSB (Most Significant Bit).
- Se MSB = 0: il numero è positivo.
- Se MSB = 1: il numero è negativo.
Come si ottiene un numero negativo?
Per trasformare un numero positivo nel suo corrispondente negativo, la CPU esegue due passaggi logici:
- Inversione (NOT): Si invertono tutti i bit (0 diventa 1, 1 diventa 0).
- Incremento (+1): Si aggiunge 1 al risultato ottenuto.
| Decimale | Binario (8 bit) | Inversione (NOT) | Aggiungi 1 (+1) | Risultato (Negativo) | Hex (emu8086) |
|---|---|---|---|---|---|
| 1 | 0000 0001 |
1111 1110 |
+ 1 |
1111 1111 |
FFh |
| 5 | 0000 0101 |
1111 1010 |
+ 1 |
1111 1011 |
FBh |
| 10 | 0000 1010 |
1111 0101 |
+ 1 |
1111 0110 |
F6h |
| 127 | 0111 1111 |
1000 0000 |
+ 1 |
1000 0001 |
81h |
LABORATORIO
Esercitazione: Visualizzare i negativi in emu8086
Osserveremo come l'emulatore interpreta i valori esadecimali alti come numeri negativi.
- emu8086
1 Analisi del valore FFh
Esegui questo codice e osserva attentamente il registro AL:
ORG 100h
MOV AL, -1 ; Carico meno uno
RET
Osservazione: AL conterrà FF. Se apri il "Converter" di emu8086 e scrivi FF in esadecimale, vedrai che nel campo "signed 8-bit" appare proprio -1.
2 Esercizio: Il "Giro Completo"
Cosa succede se aggiungiamo 1 a un registro che contiene FFh (-1)?
ORG 100h
MOV AL, 0FFh ; Rappresenta -1
ADD AL, 1 ; -1 + 1 dovrebbe fare 0
RET
Riflessione: AL diventa 00h. La CPU ha eseguito correttamente l'operazione aritmetica ignorando il riporto finale, dimostrando che il complemento a due funziona perfettamente per le somme algebriche.
3 Sfida Matematica
Calcola manualmente su carta il complemento a due del numero decimale 5 (usa 8 bit) e poi verifica il risultato scrivendo MOV BL, -5 nell'emulatore. Quale valore esadecimale appare in BL?