Cette source gerent les 256 couleurs de la palette graphique en mode 13h, cree 64 tons de rouge , 64 tons de vert, 64 tons de bleu et 64 tons de gris .
Puis une fois les couleurs initialisé dans la palette les affiches, classés par couleur et centré .
Ce code est fait pour fasm, pour les autres assembleur quelques modification minime sont a apportés .
Source / Exemple :
MOV AX, 13h ; passage en mode 13h
INT 10h
debut:
MOV DX, 03C8h
XOR AX, AX
OUT DX, AL ; initialisation de la palette
INC DX
MOV CX, 64
rouge:
OUT DX, AL ; 64 tons de rouge, 0 de vert,0 de bleu
PUSH AX
XOR AX, AX
OUT DX, AL
OUT DX, AL
POP AX
INC AX
LOOP rouge
MOV CX,64
vert:
PUSH AX
XOR AX,AX
OUT DX, AL ; 64 tons de vert, 0 de rouge , 0 de bleu
POP AX
OUT DX, AL
PUSH AX
XOR AX,AX
OUT DX, AL
POP AX
INC AX
LOOP vert
MOV CX,64
bleu:
PUSH AX
XOR AX,AX
OUT DX, AL ;64 tons de bleu, 0 de rouge , 0 de vert
OUT DX, AL
POP AX
OUT DX, AL
INC AX
LOOP bleu
MOV CX,64
gris:
OUT DX, AL
OUT DX, AL ; 64 tons de rouge , 64 tons de vert et 64 tons
OUT DX, AL ; de bleu donne du gris , donc on a 64 tons de
INC AX ; gris
LOOP gris
MOV CX,64
MOV AX,0A000h ; 0a000h est l'adresse de la carte video
MOV ES,AX ; on ne peut pas faire de mov es, 0a000h donc
; on utilise AX
MOV DI,16032 ; on commence au pixel 16032 et on va ecrir sur
MOV CX,100 ; 100 ligne pour que notre palette de couleur
; soit centré au millieu de l'ecrant
; rappel : pour obtenir le numero d'un pixel =
; [y*320] + x
ligne:
XOR BX,BX ; on commence a la couleur 0 et on sauvegarde
PUSH DI ; DI
pix:
MOV [ES:DI],BX ; on ecrit le pixel .
INC DI ; on incremente DI de 1 .
INC BX ; on incremente BX (vouleur) de 1 .
CMP BX,255 ; on verifi qu'on ne depasse pas les 256 couleurs
JNE pix ; autorisé par le mode 13h , et si on ne depasse
; pas on continue .
POP DI ; on fait revenir DI et on lui rajoute 320, donc
ADD DI,320 ; une ligne puisque en mode 13h l'ecrant fait
LOOP ligne ; 320x200 , et on retourne a "ligne" pour continué
; a dessiner les pixels et ca pour 100 ligne
; ce qui est déclarer plus haut , docn regarder
; un peut plus haut si vous ne comprener pas
; pourquoi
XOR AX, AX ; on attend l'appui d'une touche pour continuer
INT 16H ; (16h = interruption clavier)
MOV AX, 03H ; on repasse en mode texte
INT 10H
RET ; et on rend la main au dos
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.