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) ...