Sei sulla pagina 1di 3

AssemblerMIPSEsercizidibase

Neglieserciziseguenti:
NOPSEUDOsignificachevietatoutilizzarepseudoistruzioni
MAXNsignificachepermessoutilizzarealmassimoNistruzioni
1) ScrivereunasequenzadiistruzioniMIPSchescriveilvalore1nelregistros6seilbitinsettimaposizione(da
destra) del registro s0 vale 1 (altrimenti il registro s6 rimane inalterato). Si suppone che i primi 16 bit di s0
sianotuttia0.
NOPSEUDO,MAX3
Soluzione

andi
beq
addi

$t1, $s0,
0x0040
$t1, $zero, FALSO
$s6, $zero, -1

// in binario 0000 0000 0100 0000

FALSO:

2) Scrivere una sequenza di istruzioni che scrive il valore 1 nel registro s6 se il bit in decima posizione (da
sinistra)delregistros0vale1(altrimentiilregistros6rimaneinalterato).
NOPSEUDO,MAX5
Soluzione

lui
ori
and
beq
addi

$at,
$t1,
$t1,
$t1,
$s6,

0x0040
$at,
$s0,
$zero,
$zero,

// in binario 0000 0000 0100 0000


0x0000
$t1
FALSO
-1

FALSO:

3) Scrivereunasequenzadiistruzionicheassegnaivalori1,2o3alregistros0inbasealrisultatodelconfronto
trairegistrit1et0,checontengononumerirelativi,secondoloschemaseguente:t1<t01,t1>t02e
t1=t03
MAX7
Soluzione

NE:

LT:
FINE:

bne
addi
j
blt
addi
j
addi

$t1,
$s0,
FINE
$t1,
$s0,
FINE
$s0,

$t0,
NE
$zero, 3

// eq

$t0,
LT
$zero, 2

// gt

$zero, 1

// lt

4) Comelesercizioprecedente,mairegistrit1et0contengonodueindirizzi.
MAX7
Soluzione

NE:

LT:
FINE:

bne
addi
j
bltu
addi
j
addi

$t1,
$s0,
FINE
$t1,
$s0,
FINE
$s0,

$t0,
NE
$zero, 3

// eq

$t0,
LT
$zero, 2

// gt

$zero, 1

// lt

5) Indicareilrisultatodellesecuzionedeiprogrammidegliesercizi3e4neicasiseguenti.

s0 inprogramma4
contenutodeiregistri
s0 inprogramma3
$t0=0x00000005
1
2
$t1=0xFFFFFFF0
$t0=0xFFFFFFF1
1
1
$t1=0xFFFFFFF0

6) Comelesercizio4,maNOPSEUDO.
Soluzione

NE:

LT:
FINE:

bne
addi
j
sltu
bne
addi
j
addi

$t1,
$s0,
FINE
$t3,
$t3,
$s0,
FINE
$s0,

$t0,
NE
$zero, 3

// eq

$t1,
$t0
$zero, LT
$zero, 2

// gt

$zero, 1

// lt

7)
Scrivereunasequenzadiistruzionicheassegnaalregistros0ilvaloredelladimensionedellintervallotra
dueetichettediprogrammaL1eL2;notocheL2>L1.
Soluzione

L1:
L2:

.data
...
...
.text
la
$t0, L1
la
$t1, L2
subu $s0, $t1, $t0

8) SianoL1eL2dueetichettediunprogramma.Scrivereunasequenzadiistruzionicheassegnaalregistros0il
valore1seL1>L2,ilvalore0incasocontrario.
Soluzione

la
la
sltu

$t0, L1
$t1, L2
$s0, $t1, $t0

9) Datoilprogrammaseguente,indicareinesadecimaleilvaloredeiregistris1s7et2t4dopolesecuzione.Si
ricordachelarappresentazioneinternaLittleEndian.

.data
STRINGA: .ascii "abcd"
BYTE:
.word
0x 8081 8283
.text
la
$t1, STRINGA
la
$t2, BYTE
lb
$s1, 0($t2)
lh
$s2, 0($t2)
lw
$s3, 0($t2)
lbu $s4, 0($t2)
lbu $s5, 1($t2)
lbu $s6, 2($t2)
lbu $s7, 3($t2)
lb
$t2, 0($t1)
lb
$t3, 1($t1)
lh
$t4, 0($t1)

Soluzione
s1=0xFFFFFF83

s2=0xFFFF8283

s3=0x80818283

s5=0x00000082

s6=0x00000081

s7=0x00000080

t2=0x00000061(a)

t3=0x00000062(b)

t4=0x00006261(ba)

s4=0x00000083

Potrebbero piacerti anche