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 !

Aucun commentaire:

Enregistrer un commentaire