aboutsummaryrefslogtreecommitdiff
path: root/semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm
blob: b9c3fb0b50c867d81982912466dd54cdd41a303b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
.data
.text
	lui $3, 0xAABB
	ori $3, $3, 0xCCDD
	
	# on sélectionne o_1, on le décalle de 3, on l'ajoute
	# on sélectionne o_2, on le décalle de 2, on l'ajoute
	# on sélectionne o_3, on le décalle de 1, on l'ajoute
	# on sélectionne o_4, on le décalle de 0, on l'ajoute
	
	ori $6, $0, 31 # est le nombre - 1 de bit à modifier
	or $7, $0, $6 # est notre i de la boucle qui bouge
repeat:	
	ori $8, $0, 1	# masque
	sub $10, $6, $7	# décallage pour sélection
	sllv $8, $8, $10	# on adapte notre masque pour prendre le bon
	and $9, $3, $8	# on sélectionne le bit
	srlv $9, $9, $10	# on remet le bit à l'origine
	sllv $9, $9, $7	# on le décalle
	or $4, $4, $9	# on l'ajoute
	# on calcule le nouveau i dans $7
	ori $12, $0, 1
	sub $7, $7, $12
	# on boucle si $7 >= 0
	bgez $7, repeat
	
	ori $2, $0, 35
	syscall
	
	ori $2, $0, 10
	syscall