_main: MOV R0 1 ; b SUB R1 R1 ; b SUB R2 R2 ; a SUB R3 R3 ; a _loop: OUT R2 OUT R3 PUSH R0 ; Sauvegarde de b PUSH R1 ; R0 R1 => b R2 R3 => a. Retourne b = b + a = c PUSH R1 SUB R1 R1 SUB R1 R2 SUB R0 R1 POP R1 ; R0 = R0 + R2 CMP R0 R2 ; Si overflow, il faut +1 R3 (a oct fort) JLT _add16cr1debut JMP _add16cr1fin _add16cr1debut: SUB R3 255 _add16cr1fin: PUSH R0 SUB R0 R0 SUB R0 R3 SUB R1 R0 POP R0 ; R1 = R1 + R3 CMP R1 R3 JLT _add16cr2debut JMP _add16cr2fin _add16cr2debut: JMP _end _add16cr2fin: POP R3 ; Reprise de b POP R2 JMP _loop _end: POP R3 POP R2 RET