24H_du_code_2026/Fibbo16b.asm

47 lines
721 B
NASM

_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
PUSH R1 ; R0 R1 => b R2 R3 => a. Retourne b = b + a = c
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