vendredi 29 avril 2016
Mode graphique en assembleur 8086
Le 7 janvier 2012 à 2:01:11
Bonsoir,
voila je travail actuellement sur le mode graphique en assembleur 8086 avec TASM et je rencontre un petit problème :/
En gros j'ai un menu dans lequel je peux faire afficher un pixel, une ligne droite horizontal, une ligne droite verticale, un rectangle etc... Cela ne me pose aucun problème, mais je veux rajouter de la couleur.
Quand je rentre la couleur en dur dans le code avec un simple MOV cool, 4D (pour afficher en rouge) il n'y aucun problème.
Mais maintenant je veux proposer un menu pour les couleurs. En effet après avoir choisit la forme géométrique l'on veut faire, et bien je veux afficher un menu avec toutes les couleurs disponibles.
Voici donc mon code :
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
TITLE MENU POUR AFFICHAGE GRAPHIQUE
;*************************************
DOSSEG
.MODEL SMALL
.STACK 100h
;*************************************
.DATA
; Menu couleurs
mnoir db " | 1. Affichage en Noir |", 10,13, "$"
mbleu db " | 2. Affichage en Bleu |", 10,13, "$"
mvert db " | 3. Affichage en Vert |", 10,13, "$"
mturquoise db " | 4. Affichage en Turquoise |", 10,13, "$"
mrouge db " | 5. Affichage en Rouge |", 10,13, "$"
mviolet db " | 6. Affichage en Violet |", 10,13, "$"
mmarron db " | 7. Affichage en Marron |", 10,13, "$"
mgrisclair db " | 8. Affichage en Gris clair |", 10,13, "$"
mgrisfonce db " | 9. Affichage en Gris fonce |", 10,13, "$"
mbleuclair db " | 10. Affichage en Bleu clair |", 10,13, "$"
mvertclair db " | 11. Affichage en Vert clair |", 10,13, "$"
mturquoiseclair db " | 12. Affichage Turquoise clair |", 10,13, "$"
mrougeclair db " | 13. Affichage Rouge clair |", 10,13, "$"
mvioletclair db " | 14. Affichage Violet clair |", 10,13, "$"
mjaune db " | 15. Affichage Jaune |", 10,13, "$"
mblanc db " | 16. Affichage Blanc |", 10,13, "$"
coul DB 0
;*************************************
.CODE
mov ax,@data
mov ds,ax
mov es,ax
;*************************************
;menu couleur**********
MenuCouleur:
MOV AH, 09H
MOV DX, offset menub
INT 21H
MOV AH, 09H
MOV DX, offset mnoir
INT 21H
MOV AH, 09H
MOV DX, offset mbleu
INT 21H
MOV AH, 09H
MOV DX, offset mvert
INT 21H
MOV AH, 09H
MOV DX, offset mturquoise
INT 21H
MOV AH, 09H
MOV DX, offset mrouge
INT 21H
MOV AH, 09H
MOV DX, offset mviolet
INT 21H
MOV AH, 09H
MOV DX, offset mmarron
INT 21H
MOV AH, 09H
MOV DX, offset mgrisclair
INT 21H
MOV AH, 09H
MOV DX, offset mgrisfonce
INT 21H
MOV AH, 09H
MOV DX, offset mbleuclair
INT 21H
MOV AH, 09H
MOV DX, offset mvertclair
INT 21H
MOV AH, 09H
MOV DX, offset mturquoiseclair
INT 21H
MOV AH, 09H
MOV DX, offset mrougeclair
INT 21H
MOV AH, 09H
MOV DX, offset mvioletclair
INT 21H
MOV AH, 09H
MOV DX, offset mjaune
INT 21H
MOV AH, 09H
MOV DX, offset mblanc
INT 21H
MOV AH, 09H
MOV DX, offset menub
INT 21H
;=====================================
;*************************************
;Saisie du choix et controle de la couleur
controleCouleur:
MOV AH, 09H
MOV DX, offset mchoix
INT 21H
MOV AH, 01h ;saisie du choix
INT 21H
cmp al,'1'
jb controleCouleur
je noir
noir: mov coul, 0D
cmp al,'2'
je bleu
bleu : mov coul, 1D
cmp al, '3'
je vert
vert : mov coul, 2D
cmp al, '4'
je turquoise
turquoise : mov coul, 3D
cmp al, '5'
je rouge
rouge : mov coul, 4D
cmp al, '6'
je violet
violet : mov coul, 5D
cmp al, '7'
je marron
marron : mov coul, 6D
cmp al, '8'
je grisclair
grisclair : mov coul, 7D
cmp al, '9'
je grisfonce
grisfonce : mov coul, 8D
cmp ax, '10'
je bleuclair
bleuclair : mov coul, 9D
cmp ax, '11'
je vertclair
vertclair : mov coul, 10D
cmp ax, '12'
je turquoiseclair
turquoiseclair : mov coul, 11D
cmp ax, '13'
je rougeclair
rougeclair : mov coul, 12D
cmp ax, '14'
je violetclair
violetclair : mov coul, 13D
cmp ax, '15'
je jaune
jaune : mov coul, 14D
cmp ax,'16'
je blanc
blanc: mov coul, 15D
MOV AH, 09H
MOV DX, offset entree
INT 21H
;Fin Saisie et controle
;======================================
Mon problème est le suivant : Il m'affiche tout le temps comme couleur du blanc et je ne comprend pas pourquoi :/
JE vous remercie d'avance :))
Bonne nuit ;)
Partager sur Facebook
Partager sur Twitter
Partager via Google +1
zyd
Photo
Le 7 janvier 2012 à 2:27:00
Salut,
Pour comprendre ce qui se passe, tu peux imaginer l’exécution pas à pas de ton programme. Par exemple si l’utilisateur saisit '1', quelle instruction est exécutée après la ligne 128 ? puis après la ligne 129. De même, si l’utilisateur saisit '2', quelle est l’instruction exécutée après la ligne 128 ?
Par ailleurs tu pourrais remarquer que finalement, si la saisie est correcte, il suffit de mettre dans coul la valeur de al moins un…
Bonne prog,
--
Zyd.
razyne
Photo
Le 7 janvier 2012 à 11:14:45
Salut,
merci beaucoup pour ta réponse :)
Oui effectivement je viens de retravailler dessus se matin et j'ai compris cette erreur. De plus j'ai préférer utiliser un switch, c'st plus pratique et plus optimisé à mon goût :)
Merci beaucoup :)
Problème résolu !
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire