Esercitazione 1

Transcript

Esercitazione 1
Esercitazione 1
Codifica e Rappresentazione dell’Informazione
Istruzioni Assembly MIPS
Claudia Raibulet
[email protected]
Codifica e Rappresentazione
dell’Informazione
Informazioni Generali (I)
¾
¾
¾
Il calcolatore utilizza il codice binario (0,1) per
rappresentare ogni tipo di informazione: numeri interi e
frazionari, caratteri, testi, immagini ecc.
Anche se i dati presenti in memoria o su disco sono
solitamente codificati in codice binario, perchè è il più
efficiente da realizzare con dei circuiti elettrici, essi
possono essere rappresentati nel formato più opportuno:
binario (base 2), ottale (base 8), decimale (base 10),
esadecimale (base 16) ecc.
Noi useremo principalmente la codifica binaria,
esadecimale, ASCII e talvolta quella decimale.
(La codifica esadecimale rappresenta in modo più
compatto le configurazioni di bit).
Informazioni Generali (II)
¾
¾
¾
Per ragioni che saranno illustrate più avanti nel corso, il
processore (CPU) accede alle informazioni in memoria per
gruppi di bit (word) utilizzando indirizzi multipli della
dimensione del dato (generalmente accede a 2 o 4 byte alla
volta - cioè esistono restrizioni di allineamento e accesso ai
dati).
Le word della CPU MIPS sono a 32 bit (4 byte) e per ora
ipotizzeremo che non sia possibile accedere ad ogni byte
singolarmente.
Altri processori possono avere word di altre dimensioni,
solitamente multipli di 4 (8, 16, 32, 64)..
Tabella ASCII – in esadecimale
Esercizio 1
¾
Convertire il numero decimale 128 in esadecimale.
12810 = 0x8016
Esercizio 2
¾
Convertire i seguenti numeri esadecimali in binario:
0x64
= 0110 01002
0x1100001 = 0001 0001 0000 0000 0000 0000 00012
0xD9E4
= 1101 1001 1110 01002
Esercizio 3
¾
Se il numero 72 fosse rappresentato in binario,
quale sarebbe il valore del suo bit in posizione 5
(ovvero 2^4)? (Rispondere senza effetuare la
conversione)
0, perchè 72 = 64 + 8 = 2^6 +2^3
Esercizio 4
¾
Convertire i seguenti numeri decimali in binario in
complemento a 2 su 8 bit:
-70 =
-124 =
-34 =
1011 1010CA2
1000 0100CA2
1101 1110CA2
Esercizio 5
¾
Codificare in numeri decimali e esadecimali secondo
lo standard ASCII le seguenti strighe:
Decimale:
Ciao
= 067 105 097 111
1999
= 049 057 057 057
z=x*[w*(25+y)] = 122 061 042 091 119 091 040 050 053 043 121 041 093
Esadecimale:
Ciao
= 43 69 61 6F
1999
= 31 39 39 39
z=x*[w*(25+y)] = 7A 3D 2A 5B 77 5B 28 32 35 2B 79 29 5D
Esercizio 6
¾
¾
Quale è la rappresentazione in virgola mobile
per il seguente numero decimale:
13,25 = 1101,01 = 1,10101*23
La rappresentazione in virgola mobile su 32 bit:
•
•
•
1 bit di segno
8 bit per l’esponente (eccesso 127)
23 bit per la mantissa
S E 8 bit
M
23 bit
3130 2928 2726 25 24 2322 21 201918 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 10000010 1010100000000000000000
Istruzioni Assembly MIPS
Esercizio 1
¾
Si chiede di realizzare il programma MIPS che
effettua la somma 3+2, e deposita il risultato nel
registro $t2. Si suppone che i valori 3 e 2 siano
memorizzati nei registri $t1 e $t0.
add $t2, $t0, $t1
¾
Quale è il formato dell’istruzione?
R-format: [op:6][rs:5][rt:5][rd:5][shamt:5][funct:6]
¾
Quale è la rappresentazione binaria ed esadecimale
dell’istruzione?
000000 01000 01001 01010 00000 100000
0000 0001 0000 1001 0101 0000 0010 0000 – 0 1 0 9 5 0 2 0
Esercizio 2
¾
Si chiede di realizzare il programma MIPS che effettua
la somma 4+100, e deposita il risultato nel registro $t1.
Si suppone che il valore 4 sia memorizzato nel registro
$t0. 100 è un valore costante.
addi $t1, $t0, 100
¾
Quale è il formato dell’istruzione?
I-format: [op:6][rs:5][rt:5][constant:16]
¾
Quale è la rappresentazione binaria ed esadecimale
dell’istruzione?
001000 01000 01001 00000000 01100100
0010 0001 0000 1001 0000 0000 0110 0100 – 2 1 0 9 0 0 6 4
Esercizio 3
¾
Considerando che i valori 10, 5, 20, 100 sono
memorizzati respettivamente nei registri $s0, $s1,
$s2, $s3, quale è il valore ritornato dalla sequenza
di istruzioni:
add $t0, $s0, $s1
add $t1, $s2, $s3
sub $t2, $t1, $t0
¾
Quale è la rappresentazione binaria delle istruzioni?
000000 10000 10001 01000 00000 100000
000000 10010 10011 01001 00000 100000
000000 01001 01000 01010 00000 100010
Esercizio 4
¾
A quale istruzione macchina MIPS corrisponde il
codice binario:
0010 0010 1110 1011 0000 0000 0110 0000
addi $t3, $s7, 96
Esercizio 5
¾
A quale istruzione macchina MIPS corrisponde il
codice esadecimale:
0x02325022
sub $t2, $s1, $s2
Esercizio 6
¾
¾
¾
Come possiamo azzerare un registro?
Quale è la sequenza di istruzioni per il calcolo
della somma: a+a+a+a sapendo che il valore di a è
memorizzato nel registro $t0?
Quale è la sequenza di istruzioni per il calcolo
della somma: a+a+a sapendo che il valore di a è
memorizzato nel registro $t1?
Esercizio 7
¾
I valori relativi alle variabili a, b, c, d sono
memorizzati di seguito nella memoria partendo
dall’indirizzo specificato nel registro $s0. Si chiede
di scrivere la sequenza di istruzioni che aggiunge la
costante 10 alle variabili a, b, c, d. I nuovi valori
delle variabili vengono salvati nella memoria.
lw $t0, 0($s0)
addi $t0, $t0, 10
sw $t0, 0($s0)
lw $t0, 4($s0)
addi $t0, $t0, 10
sw $t0, 4($s0)
...