LibreOffice Presentation Template...

Post on 06-Jul-2020

5 views 0 download

Transcript of LibreOffice Presentation Template...

Elettronica dei Sistemi Programmabili

A.A. 2013-2014

Esercizi vari

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.

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)

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

Esercizi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Cortex-M0

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

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