47 lines
721 B
NASM
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
|