Tracé de lignes horizontales/verticales en mode MCGA(320*200*256)
Les coordonnées du premier point seront passées dans AX et BX, la longueur dans CX.
La direction (horizontale/verticale) sera donnée par DX (0/1)
Source / Exemple :
Data segment
data ends
Code segment
Assume CS : Code , DS : data
Deb :
MOV AX, data
MOV DS, AX
MOV AH, 0 ;mode VGA
MOV AL, 13h
INT 10h
MOV AX, 0A000h ;Segment écran
MOV ES, AX
MOV AX, 30
MOV BX, 50
MOV CX, 100
mov dx,0
call droite
MOV AX, 30
MOV BX, 50
MOV cX, 20
mov dx,1
call droite
MOV AX, 30
MOV BX, 70
MOV cX, 101
mov dx,0
call droite
MOV AX, 130
MOV BX, 50
MOV cX, 20
mov dx,1
call droite
MOV AH,8
INT 21h
MOV AH, 0
MOV AL, 3
INT 10h
MOV AH, 4Ch
INT 21h
droite proc
mov si,bx
mov di,ax
mov ax,320
push dx
mul bx
add di,ax
pop dx
cmp dx,0
je boucle2
boucle:
inc si
mov es:byte ptr[di],95
add di , 320
cmp si,200
jge fin
loop boucle
jmp fin
boucle2:
inc si
mov es:byte ptr[di],95
inc di
cmp si , 320
jge fin
loop boucle2
fin:
ret
endp droite
efface_ecran PROC
MOV DI, 0
MOV CX,320
bigboucle2:
PUSH CX
MOV CX,200
boucle3:
MOV AL, 0
MOV ES:[DI], AL
INC DI
LOOP boucle3
POP CX
LOOP bigboucle2
RET
efface_ecran ENDP
Code ends
END deb
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.