LibreOffice Presentation Template...
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