a = 0 b = 1 c = 1 print a loop print b c = a + b a = b b = c loop si b < c a b R0 R1 R2 R3 233 121 -233 121 OUT 0 1 1 2 233 a + b = a - -b SUB R0 R1 R0 - R1 R0 = 0 R1 = b R2 = a 0 - b R0 = -b R0 = a R1 = b R2 = 0, -b R3 = ? _data: _add: PUSH R2 MOV R2 0 SUB R2 R1 ; 0 - b SUB R0 R2 ; a - (0 - b) = a - -b = a + b POP R2 RET _main: MOV R0 0 MOV R1 1 ... R2 = 7 CALL _add R2 SUB R0 R1 SUB R2 R0 a - -b LDR Rx Ry _label ;génération binaire 1011xxyy aaaaaaaa avec xx et ;yy = R0,R1,R2,R3 ;load dans le registre xx la valeur à l'adresse aaaaaaaa+Ry CMP Rx Ry ;génération binaire 0011xxyy avec xx et yy = R0,R1,R2,R3 ;compare le registre xx à la valeur du registre yy, modifie ;les flags LT et EQ ;LT= (Rx