Bonjour,

Voila je début en assembleur et j'ai essayé de créer une petite routine pour convertir mes minutes en secondes.
Mais je n'ai aucun moyen de vérifier.
J'ai essayer de commenter le code comme je le pensais.
Merci de votre futur aide.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
; --- Routine permettant de convertir les minutes en secondes
cal_tp_res:
		; --- Conversion minute - seconde
		; --- On charge les minutes dans w et on sauve le tout dans resul
		movf mind_0 , w
		movwf resul
		; --- Effacement de la carry
		bcf STATUS , C
		; --- On multiplie par 2
		rlf resul , f
		; --- On multiplie par 4
		rlf resul , f
		; --- On multiplie par 8
		rlf resul , f
		; --- On multiplie par 16
		rlf resul , f
		; --- On soustrait resul par mind_0 afin d'obtenir une multiplication par 15
		subwf resul , f
		; --- On multiplie par 30
		rlf resul , f
		; --- On multiplie par 60
		rlf resul , f
		; --- On stock le resul dans tp_res
		movf resul, w
		movwf tp_res
		clrf resul
		; --- Conversion dizaine de minutes - seconde
		; --- On charge les minutes dans w et on sauve le tout dans resul
		movf mind_1 , w
		movwf resul
		; --- Effacement de la carry
		bcf STATUS , C
		; --- On multiplie par 2
		rlf resul , f
		; --- On multiplie par 4
		rlf resul , f
		; --- On multiplie par 8
		rlf resul , f
		; --- On multiplie par 16
		rlf resul , f
		; --- On soustrait resul par mind_1 afin d'obtenir une multiplication par 15
		subwf resul , f
		; --- On multiplie par 30
		rlf resul , f
		; --- On multiplie par 60
		rlf resul , f
		; --- On stock le resul dans retenue
		movf resul, w
		movwf retenue
		; --- Effacement de la carry
		bcf STATUS , C
		; --- On multiplie par 2
		rlf retenue , f
		; --- On multiplie par 4
		rlf retenue , f
		; --- On additione retenue par resul afin d'obtenir une multiplication par 5 donc par 300 car 60 * 5(= 30
		addwf retenue , f
		; --- On multiplie par 2 afin d'obtenir une multiplication par 600
		rlf retenue , f
		; --- On additione resul a tp_res afin d'obtenir la conversion totale des minutes en secondes
		movf retenue , w
		addwf tp_res , f
		clrf retenue
		clrf resul
		; --- Il suffit maintenant d'ajouter les secondes et les dizaines de secondes afin d'avoir le temps demandé par l'utilisateur en seconde
		; --- Ajout des secondes
		movf secd_0 , w
		addwf tp_res , f
		; --- Ajout des dizaines de secondes
		movf secd_1 , w
		movwf resul
		; --- Effacement de la carry
		bcf STATUS , C
		; --- On multiplie par 2
		rlf resul , f
		; --- On multiplie par 4
		rlf resul , f
		; --- On additione resul par secd_1 afin d'obtenir une multiplication par 5
		addwf resul , f
		; --- On multiplie par 2 afin d'obtenir une multiplication par 10
		rlf resul , f
		; --- On additione resul dans tp_res
		movf resul , w
		addwf tp_res , f
		; --- On vide toutes les variables utilisés pour les calcules ainsi que w
		clrf retenue
		clrf resul
		clrw
		return