bonjour
comment tracer une ligne droite avec TASM d'une longueur de 150 pixel
en mode video
merci
bonjour
comment tracer une ligne droite avec TASM d'une longueur de 150 pixel
en mode video
merci
commencer par activer le mode video avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mov ah 013h int 10
Hello,
Ok, c'est en mode 13h donc 320x200 en 256 couleurs ... le mode le plus fastoche
Ta ligne de 150 points, elles est horizontale ? verticale ? diagonale ?
Je ne sais pas où tu en es, alors je vais revoir tout rapidement depuis le début.
l'écran graphique fait 320x200 points donc 64000 octets
Le segment vidéo est A000h
Le point en haut à gauche est à l'adresse 0000h
Le point en bas à droite est à l'adresse F9FFh
Pour calculer l'adresse d'un point si tu as ses coordonnées X,Y
X+Y*320 (c'est un tableau en somme)
Exemple : afficher un point en X=34 Y=80
34+80*320 = 25634 = 6422h
Lors de l'initialisation, le mode VGA utilise une palette de couleurs standard.
Dans cette palette, le rouge correspond à 40
petit bout de code :
et voila !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 mov ax,13h int 10h mov ax,0A000h mov es,ax mov bx,6422h mov al,40 mov es:[bx],al
a+ François
Voici ça devrai faire ton bonheur j'ai essayé de faire simple avec les procedure
je n'ai pas compilé donc il peut y avoir des erreurs mais facile à corrigé a+
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 .386 .MODEL SMALL .STACK 100H .DATA DEBUTX DB 10 DEBUTY DB 10 CURRENT_X DB ? CURRENT_Y DB ? COLOR DB 15 NB_PIXEL DB 150 HORIZ_OR_VERTI DB 1 ; ici tu peux imaginer Horizontale = 1, Vericale = 2 .CODE MAIN PROC MOV AX,@DATA MOV DS,AX CALL MODE_VIDEO13 CALL AFFICHE_LIGNE MOV AX,4C00H INT 21H MAIN ENDP MODE_VIDEO13 PROC PUSH AX MOV AH,0 MOV AL,13H ; VGA 256 Couleurs, 320X200 INT 10H POP AX MODE_VIDEO13 ENDP AFFICHE_PIXEL PROC PUSHA MOV AH,0CH MOV AL,COLOR ;XOR BX,BX ; page 0 mais ici ça concerne EGA : XOR CX,CX XOR DX,DX MOV CL,CURRENT_X MOV DL,CURRENT_Y INT 10H POPA AFFICHE_PIXEL ANDP AFFICHE_LIGNE PROC PUSHA MOV AL,DEBUT_X MOV CURRENT_X,AL MOV AL,DEBUT_Y MOV CURRENT_Y,AL XOR CX,CX MOV CL,NB_PIXEL ; on va bouble NB_PIXEL fois CONTINUE : CMP HORIZ_OR_VERTI,1 JE HORIZONTALE INC CURRENT_Y JMP PIXEL HORIZONTALE : INC CURRENT_X PIXEL : CALL AFFICHE_PIXEL LOOP CONTINUE POPA AFFICHE_LIGNE ENDP END MAIN
merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager