home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Interdit
/
pc-interdit.iso
/
graph
/
fade.asm
< prev
next >
Wrap
Assembly Source File
|
1994-10-07
|
2KB
|
75 lines
data segment public
extrn colors:word
data ends
code segment public
assume cs:code,ds:data
public fade_set,fade_ResetPic
col db 0 ;segment de code pour Colors
fade_set proc pascal near source:dword, start:word, y:word, hauteur:word
mov ax,colors ;reporte Colors dans la variable de segment de code col
mov col,al
push ds
mov ax,word ptr Source + 2 ;ds:si doit pointer sur l'image source
mov ds,ax
mov si,word ptr Source
mov ax,320 ;ajoute l'adresse de début à l'intérieur de l'image source
mul start
add si,ax
mov ax,0a000h ;es:di doit pointer sur 0a000:0 (destination)
mov es,ax
mov ax,320 ;ajoute l'adresse de début à l'intérieur
mul y ;de l'image de destination
mov di,ax
mov ax,320 ;convertit la hauteur en nombre d'octets
imul hauteur
mov cx,ax
lp: ;boucle principale
lodsb ;valeur de destination en al
mul col ;calcule la nouvelle couleur
add al,es:[di] ;ajoute la valeur actuelle
add al,col
stosb ;et écrit le résultat
dec cx ;tous les pixels copiés ?
jne lp
pop ds
ret
fade_set endp
fade_ResetPic proc pascal far y:word, hauteur:word
mov ax,0a000h ;es:di doit pointer sur l'adresse VGA 0a000:0
mov es,ax
mov ax,320 ;tient compte de l'ordonnée y
mul y
mov di,ax
mov ax,320 ;calcule le nombre d'octets à traiter
mul hauteur
mov cx,ax
res_lp:
mov al,es:[di] ;lit une valeur
xor ah,ah ;annule ah pour la division!
div byte ptr colors ;calcule le numéro de bloc
dec al ;extrait le bloc de Reset
stosb ;écrit le résultat
dec cx ;tous les pixels traités?
jne res_lp ;non, on continue
ret
fade_ResetPic endp
code ends
end