Affichage d'un carré (rouge), centré, sur la pointe, qui se remplit

Contenu du snippet

Compilé moi ça avec Tasm,

c tout simple affichage d'un carré rouge centré sur la pointe avec une dimension de 200x200 coloré en vert.

Voici les interruptions appelé:

; mode vidéo n°12 : AH=0, AL=12, INT 10h
; affichage d'un pixel : AH=12, AL=couleur,CX=X,DX=Y, INT 10h

le programme commence a remplir la moitié du carré a partir du milieu jusqu'a tout en haut et puis du milieu jusqu'à tout en bas.

le reste c'est du calcul de pixel :)

J'espère que ça pourra en aider + d'1

Si vous avez des problèmes a la comprehension de ce piti algorithme laisser voc commentaire et j'y répondrai

désolé pour le screen pas moyen d'en faire sous dos je pense loool

Source / Exemple :


;
;  Affichage d'un carré rouge, centré, sur la pointe
;  ce carré a une dimension de 200x200 et sera coloré en vert.
;
;  mode vidéo n°12  : AH=0, AL=12, INT 10h
;  affichage d'un pixel : AH=12, AL=couleur,CX=X,DX=Y, INT 10h
;
.MODEL SMALL
.STACK 100H
.486
.CODE
MAIN    PROC

        MOV     AL,12h          ; mode VGA
        SUB     AH,AH           
        INT     10h

        MOV     AL,12           ; rouge
        MOV     AH,12           ; ecrire pixel
        MOV     BH,0            ; page 0
        MOV     CX,120
        MOV     DX,240          ; centré

        MOV     BL,199          ; cote = 199 pixels
@@1:    INC     CX
        DEC     DX
        INT     10h             ; coté ouest -> nord
        DEC     BL
        JNZ     @@1

        MOV     BL,199          
@@2:    INC     CX
        INC     DX
        INT     10h             ; coté nord -> est
        DEC     BL
        JNZ     @@2

        MOV     BL,199     
@@3:    DEC     CX
        INC     DX
        INT     10h             ; coté est -> sud
        DEC     BL
        JNZ     @@3

        MOV     BL,199 
@@4:    DEC     CX
        DEC     DX
        INT     10h             ; coté sud -> ouest
        DEC     BL
        JNZ     @@4

        MOV     AL,10           ; vert

        MOV     SI,397          ; horizontale
@@5:    PUSH    SI              ; remplir vers le haut
        PUSH    CX
@@6:    INC     CX
        INT     10h
        DEC     SI
        JNZ     @@6
        POP     CX
        INC     CX
        DEC     DX
        POP     SI
        DEC     SI
        DEC     SI
        JNS     @@5

        MOV     CX,121
        MOV     DX,241

        MOV     SI,395          ; ligne la plus longue déjà faite        
@@7:    PUSH    SI              ; remplir vers le bas
        PUSH    CX
@@8:    INC     CX
        INT     10h
        DEC     SI
        JNZ     @@8
        POP     CX
        INC     CX
        INC     DX
        POP     SI
        DEC     SI
        DEC     SI
        JNS     @@7

fin:    MOV     AX,4C00h
        INT     21h
MAIN    ENDP
END     MAIN

Conclusion :


Compiler sous tasm, si y a un bug merci de le signaler

A voir également

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.