Vous êtes sur la page 1sur 3

Exercice : langage assembleur et machine MIPS

1. Soit à stocker les instructions du programme considéré, en mémoire à partir de l’adresse (00400000). Donnez l’adresse
mémoire et le code machine (en hexa) de chaque instruction.

Code machine (en hexa)


addi $s0, $0, 0x4f3c Adresse
sll $t0, $s0, 16
addi $s1, $0, 0x39 ………………... ……………………………..
or $s0, $t0, $s1 ……………… ……………………………..
add $s1, $s1, $t0
………………... ……………………………..
sub $t0, $S0, $S1
………………...
……………………………..
………………...
……………………………..
………………
……………………………..

Mémoire Centrale

2. Traduisez le programme suivant du code machine au code assembleur MIPS. Les nombres de gauche
représentent les adresses des instructions dans la mémoire et les nombre de droite correspondent aux
instructions du programme (en Hexa).

0x00400000 0x20080000 .......................................................................................................


0x00400004 0x20090001 .......................................................................................................
0x00400008 0x0089502a .......................................................................................................
0x0040000c 0x15400003 .......................................................................................................
0x00400010 0x01094020 .......................................................................................................
0x00400014 0x21290002 .......................................................................................................

P. 1
Annexe
MIPS register Set

MIPS instructions
R-type instructions (add, sub, and, or, slt): rd <-- rs funct rt

RI-type instructions (addiu): rt <-- rs funct (Immidiat 16)

Load: rt <-- Mem[rs + I16] Store: Mem[rs + I16] <-- rt

Branch equal: PC <-- (rs == rt) ? PC + 4 + I16 <<2 : PC + 4

J instruction (J, Jal) : PC <-- PC31-28 IR25-0 00


2 I26

Code opération et code fonction de quelques instructions :

P. 2
Instruction Code opération Code fonction
Addi (RI type) 001000 (8) X
Sll (R type) 000000 (0) 000000 (0)
Or (R type) 000000 (0) 100101 (37)
Add (R type) 000000 (0) 100000 (32)
Sub (R type) 000000 (0) 100010 (34)
slt(R type) 000000 (0) 101010 (42)
beq 000100 (4) x
bne 000101 (5) x
J 000010 (2) x
Jal 000011 (3) X
SW 101011 (43) X
LW 100011 (35) x
Jr 000000 (0) 001000 (8)

P. 3

Vous aimerez peut-être aussi