aboutsummaryrefslogtreecommitdiff
path: root/semestre 3/architecture des ordinateurs/tme
diff options
context:
space:
mode:
Diffstat (limited to 'semestre 3/architecture des ordinateurs/tme')
-rw-r--r--semestre 3/architecture des ordinateurs/tme/tme3/exercice1.asm7
-rw-r--r--semestre 3/architecture des ordinateurs/tme/tme3/exercice2.asm11
-rw-r--r--semestre 3/architecture des ordinateurs/tme/tme3/exercice3.asm34
-rw-r--r--semestre 3/architecture des ordinateurs/tme/tme3/exercice4.asm31
-rw-r--r--semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm24
5 files changed, 107 insertions, 0 deletions
diff --git a/semestre 3/architecture des ordinateurs/tme/tme3/exercice1.asm b/semestre 3/architecture des ordinateurs/tme/tme3/exercice1.asm
new file mode 100644
index 0000000..a4d60aa
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/tme/tme3/exercice1.asm
@@ -0,0 +1,7 @@
+.data
+.text
+ addi $12, $18, 33
+ addu $0, $18, 12
+
+ ori $2, $0, 10
+ syscall
diff --git a/semestre 3/architecture des ordinateurs/tme/tme3/exercice2.asm b/semestre 3/architecture des ordinateurs/tme/tme3/exercice2.asm
new file mode 100644
index 0000000..9b01763
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/tme/tme3/exercice2.asm
@@ -0,0 +1,11 @@
+.data
+.text
+ # dans la question 2, on remplace 137 par 65537 -> ça crash, car 65537 ne peut pas être écrit sur 16 bits
+ ori $8, $0, 137
+
+ or $4, $0, $8
+ ori $2, $0, 1
+ syscall
+
+ ori $2, $0, 10
+ syscall
diff --git a/semestre 3/architecture des ordinateurs/tme/tme3/exercice3.asm b/semestre 3/architecture des ordinateurs/tme/tme3/exercice3.asm
new file mode 100644
index 0000000..bb13955
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/tme/tme3/exercice3.asm
@@ -0,0 +1,34 @@
+.data
+.text
+ # on récupère les deux entiers
+ ori $2, $0, 5
+ syscall
+ or $9, $0, $2
+
+ ori $2, $0, 5
+ syscall
+ or $10, $0, $2
+
+ # on gère la division
+ div $9, $10
+ mflo $11
+ mfhi $12
+
+ or $4, $0, $11
+ ori $2, $0, 1
+ syscall
+
+ or $4, $0, $12
+ syscall
+
+ # on mult le quotient par $10 pour reconstruire le nombre
+ multu $11, $10
+ # on récupère la valeur et on y ajoute le reste
+ mflo $13
+ addu $13, $13, $12
+
+ or $4, $0, $13
+ syscall
+
+ ori $2, $0, 10
+ syscall \ No newline at end of file
diff --git a/semestre 3/architecture des ordinateurs/tme/tme3/exercice4.asm b/semestre 3/architecture des ordinateurs/tme/tme3/exercice4.asm
new file mode 100644
index 0000000..4b18b69
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/tme/tme3/exercice4.asm
@@ -0,0 +1,31 @@
+.data
+.text
+ # Operations logiques
+ ori $8, $0, 0x00FF # $8 = 0x0000 00FF
+ ori $9, $0, 0xFFF0 # $9 = 0x0000 FFF0
+ and $10, $9, $8 # $10 = 0x0000 00F0
+ xor $11, $9, $8 # $11 = 0x0000 FF0F
+ xor $11, $11, $11 # $11 = 0x0000 0000
+
+ # Decalages
+ ori $9, $0, 25 # $9 = 0b0...0 0001 1001
+ sll $10, $9, 1 # $10 = 0b0...0 0011 0010
+ sll $11, $9, 2 # $11 = 0b0...0 0110 0100
+ sll $12, $9, 3 # $12 = 0b0...0 1100 1000
+ srl $10, $9, 1 # $10 = 0b0...0 0000 1100
+ srl $10, $9, 2 # $10 = 0b0...0 0000 0110
+ srl $10, $9, 3 # $10 = 0b0...0 0000 0011
+ addi $9, $0, -25 #$9 = 0b1111 1...1 1101 0111
+ srl $10, $9, 1 # $10 = 0b0111 1...1 1110 1011
+ srl $11, $9, 2 # $11 = 0b0011 1...1 1111 1101
+ sra $12, $9, 1 # $12 = 0b1111 1...1 1110 1011
+ sra $13, $9, 2 # $13 = 0b1111 1...1 1111 1101
+ sra $14, $9, 3 # $14 = 0b1111 1...1 1111 1110
+
+ # Comparaisons
+ ori $9, $0, 2 # $9 = 0b10
+ ori $8, $0, 4 # $9 = 0b10
+ slt $11, $8, $9 # $11 = 0
+ slt $12, $9, $8 # $12 = 1
+ ori $2, $0, 10
+ syscall \ No newline at end of file
diff --git a/semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm b/semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm
new file mode 100644
index 0000000..16cece8
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm
@@ -0,0 +1,24 @@
+.data
+.text
+ lui $3, 0xAABB
+ ori $3, $3, 0xCCDF
+
+ # variable définissant le bit qu'on déplace
+ ori $4, $0, 3
+ # on génère le mask pour sélectionner le bit
+st: ori $8, $0, 1 # est le mask
+ ori $9, $0, 3 # est le décallage pour le mask
+ subu $9, $9, $4 # le nombre de décallage du bit pour le mask
+ sllv $8, $8, $9 # on génére le mask
+ # on applique le mask
+ and $10, $3, $8 # on sélectionne le bon bit
+ srlv $10, $10, $4 # on décalle le bit
+ # on ajoute le résultat
+ or $5, $5, $10
+ # on boucle
+ ori $11, $0, 1
+ subu $4, $4, $11
+ bgez $4, st
+
+ ori $2, $0, 10
+ syscall \ No newline at end of file