LibreOffice Presentation Template...

21
Elettronica dei Sistemi Programmabili A.A. 2013-2014 Esercizi vari

Transcript of LibreOffice Presentation Template...

Page 1: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Elettronica dei Sistemi Programmabili

A.A. 2013-2014

Esercizi vari

Page 2: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

2/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Regola semplice

Quando si addizionano due interi, ricordarsi che la flag per l'overflow viene settata se:

si addizionano due numeri positivi e il risultato è un numero negativo;

si addizionano due numeri negativi e il risultato è un numero positivo.

Page 3: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

3/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Hardware per carry e overflow

La CPU che esegue un'istruzione ADD modifica C e V:

C: carry-out del bit più significativo (MSB);V: (carry-out MSB) XOR (carry-in MSB).

La CPU che esegue un'istruzione SUB modifica C e V:

calcola opposto del 2° operando e esegue ADD;C: NOT(carry-out MSB);V: (carry-out MSB) XOR (carry-in MSB)

Page 4: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

4/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizi

Page 5: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

5/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizio 1

Indicare lo stato delle flag della CPU e il contenuto dei registri coinvolti per la seguente sequenza di istruzioni:

MOV r0 , #1 ; r0 ← 1

SUB r0 , #1 ; r0 ← r0–1

r0 N Z C V

Page 6: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

6/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizio 1 (soluzione)

Indicare lo stato delle flag della CPU e il contenuto dei registri coinvolti per la seguente sequenza di istruzioni:

MOV r0 , #1 ; r0 ← 1

SUB r0 , #1 ; r0 ← r0–1

r0 N Z C V

0x0000 0001 - - - -

0x0000 0000 0 1 1 0

invertito

Page 7: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

7/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizio 1 (commenti)

Indicare lo stato delle flag della CPU e il contenuto dei registri coinvolti per la seguente sequenza di istruzioni:

MOV r0 , #1 ; r0 ← 1

SUB r0 , #1 ; r0 ← r0–1

r0 N Z C V

0x0000 0001 - - - -

0x0000 0000 0 1 1 0

invertito 0000 0001 + FFFF FFFF = -----------1 0000 0000

carry out

Page 8: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

8/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizio 2

Indicare lo stato delle flag della CPU e il contenuto dei registri coinvolti per la seguente sequenza di istruzioni:

MOV r0,#0xFFFFFFFF ; r0←0xFFFFFFFF

ADD r0,#1 ; r0 ← r0+1

ADD r0,#1 ; r0 ← r0+1

r0 N Z C V

Page 9: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

9/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizio 2 (soluzione)

Indicare lo stato delle flag della CPU e il contenuto dei registri coinvolti per la seguente sequenza di istruzioni:

MOV r0,#0xFFFFFFFF ; r0←0xFFFFFFFF

ADD r0,#1 ; r0 ← r0+1

ADD r0,#1 ; r0 ← r0+1

r0 N Z C V

0xFFFF FFFF - - - -

0x0000 0000 0 1 1 0

0x0000 0001 0 0 0 0

Page 10: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

10/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizio 3

Indicare lo stato delle flag della CPU e il contenuto dei registri coinvolti per la seguente sequenza di istruzioni:

MOV r0,#0x0 ; r0←0

SUB r0,#1 ; r0 ← r0-1

ADD r0,#2 ; r0 ← r0+2

r0 N Z C V

Page 11: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

11/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizio 3 (soluzione)

Indicare lo stato delle flag della CPU e il contenuto dei registri coinvolti per la seguente sequenza di istruzioni:

r0 N Z C V

0x0000 0000 - - - -

0xFFFF FFFF 1 0 0 0

0x0000 0001 0 0 1 0

MOV r0,#0x0 ; r0←0

SUB r0,#1 ; r0 ← r0-1

ADD r0,#2 ; r0 ← r0+2

Page 12: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

12/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizio 3 (commento)

Indicare lo stato delle flag della CPU e il contenuto dei registri coinvolti per la seguente sequenza di istruzioni:

r0 N Z C V

0x0000 0000 - - - -

0xFFFF FFFF 1 0 0 0

0x0000 0001 0 0 1 0

MOV r0,#0x0 ; r0←0

SUB r0,#1 ; r0 ← r0-1

ADD r0,#2 ; r0 ← r0+2

0000 0001 + FFFF FFFF = -----------0 FFFF FFFF

FFFF FFFF + 0000 0002 = -----------1 0000 0001

Page 13: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

13/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizio 4

Indicare lo stato delle flag della CPU e il contenuto dei registri coinvolti per la seguente sequenza di istruzioni:

MOV r0,#0x7FFFFFFF ; r0←0x7FFFFFFF

ADD r0,#1 ; r0 ← r0+1

r0 N Z C V

Page 14: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

14/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizio 4 (soluzione)

Indicare lo stato delle flag della CPU e il contenuto dei registri coinvolti per la seguente sequenza di istruzioni:

r0 N Z C V

0x7FFF FFFF - - - -

0x8000 0000 1 0 0 1

0x0000 0001

0 0 0 0

MOV r0,#0x7FFFFFFF ; r0←0x7FFFFFFF

ADD r0,#1 ; r0 ← r0+1

Page 15: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

15/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizio 5

Indicare lo stato delle flag della CPU e il contenuto dei registri coinvolti per la seguente sequenza di istruzioni:

MOV r0,#0x80000000 ;r0←0x80000000

ADD r0,#0x92000000;r0←r0+0x92000000

r0 N Z C V

Page 16: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

16/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizio 5 (soluzione)

Indicare lo stato delle flag della CPU e il contenuto dei registri coinvolti per la seguente sequenza di istruzioni:

r0 N Z C V

0x8000 0000 - - - -

0x1200 0000 0 0 1 1

0x0000 0001

0 0 0 0

MOV r0,#0x80000000 ;r0←0x80000000

ADD r0,#0x92000000;r0←r0+0x92000000

Page 17: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

17/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizio 6

Indicare lo stato delle flag della CPU e il contenuto dei registri coinvolti per la seguente sequenza di istruzioni:

MOV r0,#-2 ;r0 ← -2

ADD r0,#0x7FFFFFFF;r0←r0+0x7FFFFFFF

r0 N Z C V

Page 18: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

18/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Esercizio 6 (soluzione)

Indicare lo stato delle flag della CPU e il contenuto dei registri coinvolti per la seguente sequenza di istruzioni:

r0 N Z C V

0xFFFF FFFE - - - -

0x7FFF FFFD 0 0 1 0

0x0000 0001

0 0 0 0

MOV r0,#-2 ;r0 ← -2

ADD r0,#0x7FFFFFFF;r0←r0+0x7FFFFFFF

Page 19: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

19/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Cortex-M0

Page 20: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

20/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Mappa della memoria

Nella seguente figura è indicata parte della mappa della memoria per un LPC1769 basato su Cortex-M3.

Indicare il contenuto delle prime due locazioni di memoria della flash e le dimensioni della flash e della SRAM in KiB.

0x0000 0000

SRAM: _______ KiB

flash: ________ KiB

0x0000 0004

codice0x0004 0000

0x0008 0000

stack

0x2008 0000

0x2008 4000

Page 21: LibreOffice Presentation Template (Community)ssalvatori.altervista.org/alterpages/files/Esercizivari.pdf2/21 Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

21/21Elettronica dei Sistemi Programmabili – aprile 2014 – S. Salvatori

Mappa della memoria (soluzione)

Nella seguente figura è indicata parte della mappa della memoria per un LPC1769 basato su Cortex-M3.

Indicare il contenuto delle prime due locazioni di memoria della flash e le dimensioni della flash e della SRAM in KiB.

2008 40000x0000 0000

SRAM: 16 KiB

flash: 512 KiB

0x0000 00040004 0001

codice0x0004 0000

0x0008 0000

stack

0x2008 0000

0x2008 4000