IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Problème de palette


Sujet :

Assembleur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Problème de palette
    Bonjour tout le monde .

    voila je me met serieusement a l'assembleur et apres la lecture de quelques tutoriel je me suis mit en tete de générer donc la palette des couleur c'est a dir 255 couleur, et de les affiché sur tout l'ecrant .

    ce qui normalement ne devrait pas poser de probleme .
    seulement voila, la compilation se passe tres bien, aucun message d'erreur .
    je precise que j'utilise fasm .
    mais lors de l'execution du programme, les couleurs mette asser longtemp a s'affiché , et toutes les 255 couleurs ne sont pas affiché , mais les couleurs sont asser bleu .

    donc comme ce n'est pas tres clair , voici le code est une image de ce que le resultat donne :

    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
     
    mov ah, 0h
    mov al,13h        ; initialisation du mode 13h
    int 10h
     
    xor ax,ax
     
     
     
     
    mov ah,10h
    mov al,10h                      ; initialisation de la palette
     
    rouge:
    inc bx
    inc cl
    int 10h
    cmp bx,64                       ; des couleurs rouges
    jnae rouge
     
    vert:
    inc bx
    inc ch
    int 10h                         ; des couleurs vertes
    cmp bx,127
    jnae vert
     
    bleu :
    inc bx
    inc dh
    int 10h
    cmp bx,191                        ; des couleurs bleu
    jnae bleu
     
    xor ax,ax
    mov ax, 0A000h                  ; copie de l'adresse de la carte dans le segment
    mov es,ax
     
    xor ax,ax
    xor di,di
     
    boucle:
     
    inc di
    inc ax
                                              ; remplissage de l'ecrant
    mov [es:di], ax
    cmp di, 64000
     
    jnae boucle
     
    xor ax,ax                                     ; attente de la saisi d'une touche
    int 16h
     
    xor ax,ax
    mov ax, 03h                             ; retour au mode texte
    int 10h
     
    RET
    et voici une image du resultat :




    voila je ne comprend vraiment pas , normalement le resultat devrait donner autant de couleurs rouge , verte et bleu .

    et pourquoi ca met autant de temp a s'initialisé.

    merci d'avance de votre aide
    le plus beau le plus jolie le plus fort c'est qui ?
    c'est moi

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    bon voila apres m'etre casser la tete sur le code , j'ais fait quelques testes et voila ce que j'ais trouvé :

    si je compil le programme suivant :

    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
    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
    mov ah, 0h
    mov al,13h        ; initialisation du mode 13h
    int 10h
     
    xor ax,ax
     
     
     
     
    mov ah,10h
    mov al,10h                      ; initialisation de la palette
    xor bx,bx
    xor cl,cl
    xor ch,ch
    rouge:
    inc bx
    inc cl
    inc ch
    inc dh
    int 10h
    cmp bx,63                       ; des couleurs rouges
    jnae rouge
     
    vert:
    inc bx
    inc cl
    inc ch
    inc dh
    int 10h                         ; des couleurs vertes
    cmp bx,127
    jnae vert
     
    bleu :
    inc bx
    inc cl
    inc ch
    inc dh
    int 10h
    cmp bx,191                        ; des couleurs bleu
    jnae bleu
     
     
    jsaiap :
    inc bx
    inc cl
    inc ch
    inc dh
    int 10h
    cmp bx,255                        ; des couleurs bleu
    jnae jsaiap
     
     
    xor ax,ax
    mov ax, 0A000h                  ; copie de l'adresse de la carte dans le segment
    mov es,ax
     
    xor ax,ax
    xor di,di
     
    efface :
    xor ax,ax
     
    efface2 :
    xor ax,ax
    mov ax,63
     
    efface3 :
    xor ax,ax
    mov ax,123
     
    efface4 :
    xor ax,ax
    mov ax,191
     
    boucle:
     
    inc di
    inc ax
                                              ; remplissage de l'ecrant
    mov [es:di], ax
    cmp ax,63
    je efface
    cmp di, 16000
     
     
    jnae boucle
     
    boucle2:
     
    inc di
    inc ax
                                              ; remplissage de l'ecrant
    mov [es:di], ax
    cmp ax,127
    je efface2
    cmp di, 32000
     
     
    jnae boucle2
     
    boucle3:
     
    inc di
    inc ax
                                              ; remplissage de l'ecrant
    mov [es:di], ax
    cmp ax,191
    je efface3
    cmp di, 48000
     
     
    jnae boucle3
     
    boucle4:
     
    inc di
    inc ax
                                              ; remplissage de l'ecrant
    mov [es:di], ax
    cmp ax,255
    je efface4
    cmp di, 63999
     
     
    jnae boucle4
     
     
     
     
    xor ax,ax                                     ; attente de la saisi d'une touche
    int 16h
     
    xor ax,ax
    mov ax, 03h                             ; retour au mode texte
    int 10h
     
    RET
    j'obtien le meme resultat que si je compil le programme suivant :

    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
    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
    mov ah, 0h
    mov al,13h        ; initialisation du mode 13h
    int 10h
     
    xor ax,ax
     
     
     
     
    mov ah,10h
    mov al,10h                      ; initialisation de la palette
    xor bx,bx
    xor cl,cl
    xor ch,ch
    rouge:
    inc bx
    inc cl
    inc ch
    inc dh
    int 10h
    cmp bx,63                       ; des couleurs rouges
    jnae rouge
     
    vert:
    inc bx
    inc cl
    inc ch
    inc dh
    int 10h                         ; des couleurs vertes
    cmp bx,127
    jnae vert
     
    bleu :
    inc bx
    inc cl
    inc ch
    inc dh
    int 10h
    cmp bx,191                        ; des couleurs bleu
    jnae bleu
     
     
    jsaiap :
    inc bx
    inc cl
    inc ch
    inc dh
    int 10h
    cmp bx,255                        ; des couleurs bleu
    jnae jsaiap
     
     
    xor ax,ax
    mov ax, 0A000h                  ; copie de l'adresse de la carte dans le segment
    mov es,ax
     
    xor ax,ax
    xor di,di
     
    efface :
    xor ax,ax
     
     
    boucle:
     
    inc di
    inc ax
                                              ; remplissage de l'ecrant
    mov [es:di], ax
    cmp ax,63
    je efface
    cmp di, 16000
     
     
    jnae boucle
     
    boucle2:
     
    inc di
    inc ax
                                              ; remplissage de l'ecrant
    mov [es:di], ax
    cmp ax,127
    je efface
    cmp di, 32000
     
     
    jnae boucle2
     
    boucle3:
     
    inc di
    inc ax
                                              ; remplissage de l'ecrant
    mov [es:di], ax
    cmp ax,191
    je efface
    cmp di, 48000
     
     
    jnae boucle3
     
    boucle4:
     
    inc di
    inc ax
                                              ; remplissage de l'ecrant
    mov [es:di], ax
    cmp ax,255
    je efface
    cmp di, 63999
     
     
    jnae boucle4
     
     
     
     
    xor ax,ax                                     ; attente de la saisi d'une touche
    int 16h
     
    xor ax,ax
    mov ax, 03h                             ; retour au mode texte
    int 10h
     
    RET

    voila bon le code est tres laid mais bon c'était pour decomposé toutes les etapes pour bien comprendre .

    donc en compilant ces deux programme j'obtien exactement le meme resultat .

    ce qui veut dir que je n'ai pas initialisé 255 couleur sur la palette mais que je suis rester a 16 couleur

    quelqu'un pourrait-il me dir ce que je n'ai pas bien fait quand je defini les couleurs dans la palette ?

    merci d'avance
    le plus beau le plus jolie le plus fort c'est qui ?
    c'est moi

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Pour des questions de performances, il est préférable d'utiliser la sous-fonction 12h de la fonction 10h de l'interruption 10 h pour initialiser les 256 registres du DAC.
    Pour ce faire, il faut définir un buffer de 256 * 3 octets (dans l'ordre : vert, rouge, bleu) puis passer l'adresse de ce buffer à la fonction 12h. De cette manière, les 256 registres DAC seront initialisés avec un seul appel de fonction BIOS au lieu de 256.

    Mais à partir de là, je ne sais pas ce que tu espères exactement obtenir à l'écran ? Je m'explique : chaque registre DAC possédant 18 bits, tu peux obtenir 2 ^ 18 = 232144 couleurs. Mais tu ne pourras afficher simultanément au maximum que 256 couleurs différentes sur les 232144 disponibles !

    En effet, chaque octet adressé dans la RAM vidéo est interprété par le système vidéo (parce que c'est le mode 13h) comme l'index d'un des 256 registres DAC. Tous les pixels dessinés avec une certaine couleur changeront de couleur si tu modifies le registre DAC correspondant à ce n° de couleur. Ce principe était d'ailleurs utilisé dans de nombreux jeux pour, par exemple, donner un effet de flamme à certaines portions d'écran rien qu'en modifiant des registres de palette.

    J'espère ne pas être trop nébuleux dans mes explications ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    tout d'abord merci de ton aide .

    voila finalement j'ais trouvé beaucoup plus simple en inscrivant directement sur les ports de la carte .

    donc, voila mon code :

    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
    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
     
     
     
    MOV     AX, 13h	
    INT	10h		
     
    debut:
     
    MOV     DX, 03C8h	
    XOR     AX, AX		
    OUT     DX, AL		
    INC     DX		
     
    MOV     CX, 64	
     
    rouge:	
     
    OUT     DX, AL		
    PUSH    AX		
    XOR     AL, AL		
    OUT     DX, AL		
    OUT     DX, AL		
    POP     AX		
    INC     AX		
    LOOP    rouge		
     
    MOV     CX,64		
     
    vert:
    PUSH    AX
    XOR     AX,AX
    OUT     DX, AL		
    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				
    OUT     DX, AL
    POP     AX	
    OUT     DX, AL				
    INC     AX		
    LOOP    bleu		
     
    MOV     CX,64
     
    gris:
    OUT     DX, AL				
    OUT     DX, AL	
    OUT     DX, AL				
    INC     AX		
    LOOP    gris		
     
    MOV     CX,64
     
     
     
     
     
    adre:
    XOR     AX,AX
    XOR     DI,DI
    MOV     AX, 0A000h
    MOV     ES, AX
    XOR     AX, AX
    XOR     BX, BX
    XOR     DX, DX
    MOV     DX, 49
    MOV     AX, 34
    MOV     BX, AX
     
     
     
     
    pix:
     
    INC     DX
    INC     AX
     
    PUSH    AX
    MOV     AX, 320
    MUL     DX
    XOR     AX, AX
    POP     BX
    MOV     AX, 34
    SUB     BX, AX
    XOR     AX, AX
    MOV     AX, BX
    PUSH    BX
    MOV     BX, 34
    ADD     AX, BX
    XOR     BX, BX
    POP     BX
    ADD     DX, AX
     
     
     
    MOV     DI, DX
     
     
    MOV     [ES:DI], BX
     
     
    CMP     DI, 48286
    JNAE    pix
     
     
     
     
     
    XOR     AX, AX
    INT     16H
     
    RET
    donc, normalement, ce code devrait m'affiché des "tubes" des quatres couleurs ce qui donne normalement ca:



    mais au lieu de ca quand je compil ca me donne ca :



    donc la je comprend vraiment pas

    quelqu'un pourrait-il m'expliquer ou je me suis trompé dans mon code ?

    merci beaucoup d'avance
    le plus beau le plus jolie le plus fort c'est qui ?
    c'est moi

  5. #5
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Toutes les couleurs sont maintenant présentes mais décalées.
    Pour obtenir des "tubes", il ne faut afficher que 256 pixels (1 de chaque couleur) sur chaque ligne. Si tu boucles sur 320 pixels, tu obtiens forcément un décalage. Pour obtenir un rendu centré, tu peux commencer chaque ligne au pixel n° 32.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    merci beaucoup de ton aide , je refait mon code je teste et je post le resultat ici
    le plus beau le plus jolie le plus fort c'est qui ?
    c'est moi

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    je ne comprend plus , j'ais refait mon code en suivant tes conseils , le voila :

    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    MOV     AX, 13h	
    INT	10h		
     
    debut:
     
    MOV     DX, 03C8h	
    XOR     AX, AX		
    OUT     DX, AL		
    INC     DX		
     
    MOV     CX, 64	
     
    rouge:	
     
    OUT     DX, AL		
    PUSH    AX		
    XOR     AL, AL		
    OUT     DX, AL		
    OUT     DX, AL		
    POP     AX		
    INC     AX		
    LOOP    rouge		
     
    MOV     CX,64		
     
    vert:
    PUSH    AX
    XOR     AX,AX
    OUT     DX, AL		
    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				
    OUT     DX, AL
    POP     AX	
    OUT     DX, AL				
    INC     AX		
    LOOP    bleu		
     
    MOV     CX,64
     
    gris:
    OUT     DX, AL				
    OUT     DX, AL	
    OUT     DX, AL				
    INC     AX		
    LOOP    gris		
     
    MOV     CX,64
     
     
     
     
     
    adre:
    XOR     AX,AX
    XOR     DI,DI
    MOV     AX, 0A000h
    MOV     ES, AX
    XOR     AX, AX
    XOR     BX, BX
    XOR     DX, DX
    MOV     AX, 50
    MOV     DX, 320
    MOV     CX, 32
     
     
    pix:
    INC     AX
    INC     CX
    MUL     DX
    MOV     BX, CX
    SUB     BX, 32
    ADD     DX, CX
    MOV     AX, DX
    MOV     DI, AX
     
    MOV     [ES:DI], BX
     
     
    CMP     BX, 256
    JNAE    pix
     
     
     
     
     
     
     
    XOR     AX, AX
    INT     16H
     
    MOV     AX, 03H
    INT       10H
     
    RET
    Donc ca m'affiche bien les 256 couleurs de ma palette mais une seul fois , c'est a dir sur une seul ligne, et non pas en "tube" comme je le voudrais

    je ne vois vraiment pas ou est l'erreur ?

    merci de vos reponses
    le plus beau le plus jolie le plus fort c'est qui ?
    c'est moi

  8. #8
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Ne serait-il pas plus simple de boucler 200 fois, en sauvegardant di avant l'affichage de la ligne puis en le restaurant pour lui ajouter 320 :
    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
    mov     ax,0A000h
    mov     es,ax
     
    mov     di,32
    mov     cx,200
     
    ligne:
    xor     bx,bx
    push    di
     
    pix:
    mov     es:[di],bx
    inc     di
    inc     bx
    cmp     bx,255
    jne     pix
     
    pop     di
    add     di,320
    loop    ligne
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    ca marche
    merci beaucoup de ton aide et excuse moi si mes questions parraisser un petit peu debile parfois mais je manque d'entrainement en assembleur .
    merci
    le plus beau le plus jolie le plus fort c'est qui ?
    c'est moi

  10. #10
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Il ne faut pas t'excuser : ta question était intéressante.
    Si le problème est résolu, tu peux actionner le bouton ad hoc en bas et à gauche de la fenêtre d'édition.
    A bientôt !
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    c'est fait .
    a bientot

    ps: je posterai ce soir le code avec quelques dernieres modification et commenter pour que ceux que ca interesse et qui comprenne pas , comprenne
    le plus beau le plus jolie le plus fort c'est qui ?
    c'est moi

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    voila comme promit

    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
    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
     
    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 gris 	
    INC     AX		    
    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
    voila si quelque chose n'est pas clair n'hesiter pas a me le dir
    le plus beau le plus jolie le plus fort c'est qui ?
    c'est moi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Problème avec palette de couleur
    Par dmoluc dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/08/2012, 10h25
  2. [GUI] Problème avec Palette NetBeans
    Par azerty_123 dans le forum NetBeans
    Réponses: 1
    Dernier message: 13/08/2009, 13h39
  3. Problème Palette bitmap
    Par tiboo dans le forum C++
    Réponses: 11
    Dernier message: 17/08/2006, 00h09
  4. problème avec ma palette des composants
    Par korntex5 dans le forum Delphi
    Réponses: 4
    Dernier message: 10/08/2006, 13h35
  5. Réponses: 2
    Dernier message: 16/01/2005, 23h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo