# Assembly/Rappresentazione dati/Il set di caratteri ASCII

Assembly
Copertina Tutti i moduli · Sviluppo
* IntroduzioneAssembly/Introduzione
** Perché non studiare l'AssemblyAssembly/Introduzione/Perché non studiare l'Assembly
** Perché studiare l'AssemblyAssembly/Introduzione/Perché studiare l'Assembly
* Rappresentazione datiAssembly/Rappresentazione dati
* Algebra Booleana
* Organizzazione di sistema (tanta noiosa teoria)
** Componenti base di sistema
** Il tempo del Sistema
** La famiglia 80x86
** Input/Output
* Organizzazione e accesso alla memoria
** Introduzione
** Organizzazione della memoria in un x86
** Organizzazione dei segmenti in un x86
** Indirizzi di memoria in un x86
** Registri di segmento in un x86
** Metodi di indirizzamento di un x86
** L'istruzione MOV
** Commenti finali sull'istruzione MOV
* ConvenzioniAssembly/Convenzioni
    Indice
Modifica il sommario
Come dovreste già sapere, la tabella ASCII è una tabella a cui sono assegnati a ciascun codice un carattere. Al momento della stampa a video, la scheda video, preleva dalla tabella ASCII il carattere associato al codice che gli è stato mandato. La tabella ASCII standard (i primi 127 caratteri), è divisa in quattro gruppi da 32 caratteri.

## I caratteri di controllo

I caratteri i cui codici vanno da 0h a 1Fh (31d), vengono definiti caratteri di controllo. Questi non possono essere stampati, e vengono definiti così perché al momento della stampa, eseguono delle operazioni. Ad esempio abbiamo il CR (Carriage Return - codice 0Dh), che sposta il cursore hardware (il piccolo trattino lampeggiante dei terminali "_"), oppure LF (Line Feed - 0Ah), che mantiene la posizione del cursore nella riga, ma la sposta di una riga sotto, BEL (7h), che emette un bip dal computer, o ancora BS (BackSpace - 8h), che sposta il cursore a sinistra nella riga di un posto.

## I simboli

Nel secondo gruppo di caratteri (da 20h a 3Fh), abbiamo caratteri simboli. Comprendono lo spazio (20h), le cifre decimali (da 30h a 39h), i simboli : ; < = > ?, che corrispondono rispettivamente ai codici da 3Ah a 3Fh, poi ancora ! " # $ % & ' ( ) * + , - . /, che riempiono i codici da 21h a 2Fh.

## Le lettere maiuscole

Il terzo gruppo è riempito dalle lettere maiuscole inglesi che vanno da 41h a 5Ah, poi abbiamo @ alla posizione 40h e ancora [ \ ] ^ _ da 5Bh a 5Fh.

## Le lettere minuscole

L'ultimo gruppo è formato dalle lettere minuscole, che occupano i codici da 61h a 7Ah. La 60h è occupata dal carattere `. poi abbiamo { | } ~ per le ultime posizioni. Infine resta il carattere 7F, un altro carattere di controllo, DEL che cancella il carattere appena precedente il cursore, senza però farlo retrocedere

## Transizione maiuscolo/minuscolo

Supponiamo di avere la lettera "E" (45h = 01000101b) e vogliamo trasformarlo nel corrispondente minuscolo "e" (65h = 01100101b). Proviamo a comparare i due valori binari corrispondenti:
Come potete notare, la differenza è solo nel bit 5. Dunque, per trasformare una lettera nel corrispondente minuscolo, basta settare a 1 il bit 5. Viceversa, basta settarlo a 0 per trasformarla in maiuscolo.

## I bit 5 e 6

Da quanto avrete capito il bit 7 resta sempre a 0 nella tabella ASCII standard, poiché il massimo valore è 127 (01111111b). Ma i bit 5 e 6, ci indicano in quale gruppo di caratteri standard ci troviamo.

## Stampare una cifra

Nel secondo gruppo, sono presenti le cifre da 0 a 9, che come abbiamo detto riempiono i caratteri da 30h a 39h. Quindi quando vorremo stampare una cifra, ci basterà sommarvi 30h.