;******************************************************************************************* DIV2416: ;/!\ Modifiée pour la constante utilisée, voir plus bas /!\ ;Utilisation de : R1,R0 q1,q0 ; Dividende : R4,R3,R2 ; Diviseur : R5,R6 ;Résultat : R3, R2 ; Reste : R1,R0 mov R0,#00 mov R1,#00 clr C mov R7,#25 ;Boucle sur tous les bits du dividende ;/!\ devrait être 25 normalenemt /!\ DIV2416_Decalage_C: ;RLC_Dividende: ; C,R4,R3,R2 <= R4,R3,R2,C << 1 mov A,R2 rlc A mov R2,A mov A,R3 rlc A mov R3,A mov A,R4 rlc A mov R4,A ;RLC_Diviseur: ; C,R1,R0 <= R1,R0,C << 1 mov A,R0 rlc A mov R0,A mov A,R1 rlc A mov R1,A DIV2416_SauveR0R1: mov q0,R0 mov q1,R1 DIV2416_Test: ;SUB_16: ;Calcul de R1,R0 <= R1,R0 - R6,R5 clr C mov A,R0 subb A,R5 ;A <- A - R5 mov R0,A ;R0 <- R0 - R5 mov A,R1 subb A,R6 ;A <- A - R6 mov R1,A ;R1 <- R1 - R6 ;R1,R0 < R6,R5 C=1 ; mettre C à 0 et restaurer R1,R0 ;R1,R0 >= R6,R5 C=0; mettre C à 1 et conserver R1,R0 jc DIV2416_NOP_RestaurerR1R0 setb C sjmp DIV2416_Fin DIV2416_NOP_RestaurerR1R0: mov R0,q0 mov R1,q1 clr C DIV2416_Fin: djnz R7,DIV2416_Decalage_C Affiche_24: mov VITHEX, R2; comment out if necessary! ret ;*******************************************************************************************