Esercitazione 2 - 23 ottobre 2014 (60 min)
Conversioni di base con il comando bc
E' possibile usare il comando 
bc per effettuare conversioni arbitrarie di base. E' sufficiente impostare i parametri 
obase (base dell'output) e 
ibase (base dell'input): tutti i valori dati in ingresso verranno interpretati in base 
ibase e tutti quelli stampati saranno in base 
obase. 
All'avvio di 
bc, sia 
ibase che 
obase sono preimpostati a 10 (valore di default).
Conversione decimale -> esadecimale 
Ad esempio, per convertire 128 da decimale a esadecimale si può fare come segue, usando la modalità interattiva di 
bc:
il valore 128 convertito in esadecimale è 
0x80. Per uscire da 
bc basta premere 
Ctrl+d.
Equivalentemente, si può usare 
bc senza entrare in modalità interattiva come segue:
$ echo "obase=16; 128" | bc
80
 
dove il comando interno 
echo invia la stringa 
"obase=16; 128" sul canale di output standard, che viene fornito come input a 
bc usando l'operatore 
| (pipe) della shell.
Conversione esadecimale -> decimale 
Per convertire ad esempio 0xCAFE da esadecimale a decimale si può scrivere:
$ echo "ibase=16; CAFE" | bc
51966
 
-  Si noti che le lettere esadecimali devono essere maiuscole (es. 7E non 7e).
Operazioni aritmetiche in base 16
Infine, si possono fare operazioni aritmetiche in base 16 come segue:
$ echo "obase=16; ibase=16; A+1" | bc
B
 
-  Attenzione: echo "ibase=2; obase=10; 10+10" | bc stampa 100, mentre  echo "obase=10; ibase=2; 10+10" | bc stampa 4. Perché? (non perdeteci tempo durante l'esercitazione, provate a pensarci con calma a casa)
Esercizio 1
Facendo riferimento agli 
operandi e ai modi di indirizzamento della memoria nell'ISA IA32, si risponda alle domande del seguente 
questionario. 
Esercizio 2
Facendo riferimento alle 
istruzioni di movimento dati nell'ISA IA32, si risponda alle domande del seguente 
questionario. 
Esercizio 3
Facendo riferimento alle 
istruzioni aritmetico-logiche nell'ISA IA32, si risponda alle domande del seguente 
questionario.