diff --git a/2-3_asm/.cproject b/2-3_asm/.cproject
index d5614f2d4c0c5ed2daa177438f2f4c38f6f07a6c..4ee11814ef6fbac50e9a63eabf3a95213ccea107 100644
--- a/2-3_asm/.cproject
+++ b/2-3_asm/.cproject
@@ -55,7 +55,7 @@
 							<tool id="com.crt.advproject.link.exe.debug.742972049" name="MCU Linker" superClass="com.crt.advproject.link.exe.debug">
 								<option id="com.crt.advproject.link.arch.1188867588" name="Architecture" superClass="com.crt.advproject.link.arch" value="com.crt.advproject.link.target.cm3" valueType="enumerated"/>
 								<option id="com.crt.advproject.link.thumb.1248295488" name="Thumb mode" superClass="com.crt.advproject.link.thumb" value="true" valueType="boolean"/>
-								<option id="com.crt.advproject.link.script.1785160227" name="Linker script" superClass="com.crt.advproject.link.script" value="labo2_3_asm_Debug.ld" valueType="string"/>
+								<option id="com.crt.advproject.link.script.1785160227" name="Linker script" superClass="com.crt.advproject.link.script" value="2-3_asm_Debug.ld" valueType="string"/>
 								<option id="com.crt.advproject.link.manage.994083104" name="Manage linker script" superClass="com.crt.advproject.link.manage" value="true" valueType="boolean"/>
 								<option id="gnu.c.link.option.nostdlibs.1585246591" name="No startup or default libs (-nostdlib)" superClass="gnu.c.link.option.nostdlibs" value="true" valueType="boolean"/>
 								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.link.option.other.2121008218" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" valueType="stringList">
@@ -139,7 +139,7 @@
 							<tool id="com.crt.advproject.link.exe.release.1012924607" name="MCU Linker" superClass="com.crt.advproject.link.exe.release">
 								<option id="com.crt.advproject.link.arch.287050390" name="Architecture" superClass="com.crt.advproject.link.arch" value="com.crt.advproject.link.target.cm3" valueType="enumerated"/>
 								<option id="com.crt.advproject.link.thumb.1115921405" name="Thumb mode" superClass="com.crt.advproject.link.thumb" value="true" valueType="boolean"/>
-								<option id="com.crt.advproject.link.script.754134938" name="Linker script" superClass="com.crt.advproject.link.script" value="labo2_3_asm_Release.ld" valueType="string"/>
+								<option id="com.crt.advproject.link.script.754134938" name="Linker script" superClass="com.crt.advproject.link.script" value="2-3_asm_Release.ld" valueType="string"/>
 								<option id="com.crt.advproject.link.manage.1283042874" name="Manage linker script" superClass="com.crt.advproject.link.manage" value="true" valueType="boolean"/>
 								<option id="gnu.c.link.option.nostdlibs.2116952709" name="No startup or default libs (-nostdlib)" superClass="gnu.c.link.option.nostdlibs" value="true" valueType="boolean"/>
 								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.link.option.other.2082339787" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" valueType="stringList">
diff --git a/2-3_asm/src/assembleur.s b/2-3_asm/src/assembleur.s
index 7ec1956ab99c4ec4db6a52b4f709ed18d489fd43..933934206461e0b3e4093353c8b4a73955283ccb 100644
--- a/2-3_asm/src/assembleur.s
+++ b/2-3_asm/src/assembleur.s
@@ -29,7 +29,7 @@ funcexo1:
 	eor r0, r2
 	eor r0, r3
 	str r0, [r4]
-	pop {r4}
+	pop {r4} // restitution du registre
 
 	bx  lr
 
@@ -58,8 +58,27 @@ mult32:
  *****************************************************/
 .thumb_func
 funcexo2:
+	push {r4, r5, lr} // sauvegarde du registre
+	bl mult32
+	cmp r1, #1
+	beq err_ex2
+	mov r4, r0
+	mov r0, r2
+	mov r1, r3
+	bl mult32
+	cmp r1, #1
+	beq err_ex2
+	mov r5, r0
+	adds r4, r5
+	bhi err_ex2
+	mov r0, r4
+	pop {r4, r5, lr} // restitution du registre
+	bx  lr
 
-	bx   lr
+err_ex2:
+	pop {r4, r5, lr} // restitution du registre
+	mov r0, #0
+	bx	lr
 	
 	
 /*****************************************************
diff --git a/2-3_asm/src/labo2.3_asm.c b/2-3_asm/src/labo2.3_asm.c
index 2cc60dfcc030bf50b68671d9a8af1a971c6ebc96..e18d205b60df818809357e706bd3333d5b3be5fa 100644
--- a/2-3_asm/src/labo2.3_asm.c
+++ b/2-3_asm/src/labo2.3_asm.c
@@ -24,7 +24,7 @@ uint32_t funcexo2(uint32_t a, uint32_t b, uint32_t c, uint32_t d);
 int funcexo3(numbers_t s);
 
 /* global variables */
-int exo = 1;    // change this number with the exercise number you want to test;
+int exo = 2;    // change this number with the exercise number you want to test;
 
 int main(void)
 {