Articles > Assembleur > Graphismes > Vesa > PutPixel >

PutPixel

description

Ecrit un pixel à l'écran.

prototype de la fonction

 
PutPixel PROTO, x:DWORD, y:DWORD, color:BYTE
 

code de la fonction

 
.data
currVPage BYTE 0 
 
.code
PutPixel PROC, x:WORD, y:WORD, color:BYTE
  pushad
  push es
  ; ecx = 640*y+x
  ; ax = ecx/65536
  xor eax,eax
  mov ax,screen_width
  mul y
  shl edx,16
  add eax,edx
  xor ebx,ebx
  mov bx,x
  add eax,ebx
  mov ecx,eax
  shr eax,16
  cmp al,currVPage
  je L1
  mov currVPage,al
  mov dl,al
  mov ax,4F05h
  xor bx,bx
  xor dh,dh
  int 10h ; Set chunk
  L1:
  mov eax,0000A000h
  mov es,ax
  mov di,cx
  mov al,color
  mov es:[di],al
  pop es
  popad
  ret 
PutPixel ENDP
 

commentaire

Lorsque vous écrivez un programme graphique, vous avez souvent besoin d'accéder directement à la mémoire vidéo.
La mémoire occupée par une image varie généralement de quelques centaines de Ko à plusieurs Mo.
Hors, lorque vous écrivez un programme en mode réel 16 bits, la taille des segments est limitée à 64 Ko. Vous ne pouvez donc pas, à priori, accéder à l'ensemble de la mémoire vidéo.
Pour pallier ce problème, on peur définir une page mémoire vidéo qui sera visible à un instant donné. Lorsque l'on a fini d'écrire ou lire dans cette page mémoire, on passe à une autre page, et ainsi de suite...
Ce mécanisme nous permet d'utiliser de hautes résolutions graphiques, même dans un programme fonctionnant en mode réel.

INT 10 4F05 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
Inp.:
	AX = 4F05h
	BH = subfunction
	    00h select video memory window
		DX = window address in video memory (in granularity units)
	    01h get video memory window
		Return: DX = window address in video memory (in gran. units)
	BL = window number
	    00h window A
	    01h window B
	ES = selector for memory-mapped registers (VBE 2.0+, when called from
	      32-bit protected mode)
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
	    01h failed
Note:	when using an accelerated video mode under VBE/AF v1.0P, the
	  application must call EnableDirectAccess before switching banks if
	  bit 9 of the video mode attributes flag is set (see #00080)

BUG:	Phoenix S3 Trio64V+ v1.02-02 reportedly returns garbage in DX for
	  subfunction 01h
SeeAlso: AX=4F01h,AX=4F06h,AX=4F07h,AX=7000h/BX=0004h
INT 10
Copied from Ralf Brown's Interrupt List

première page page précédente page suivante dernière page

Navigation rapide :

Page Description Dernière mise à jour
PutPixel écrire un pixel à l'écran avec les modes video VESA en assembleur x86 24 jan 2008 18:29:40

Articles > Assembleur > Graphismes > Vesa > PutPixel >


Cette page a été générée le 07 sep 2008 15:21:49.
clipart home livre lecture book JEREMYA
WEBSITE
jeremya.ironie.org

s'identifier

Nom d'utilisateur :
Mot de passe :

outils

qui est en ligne ?

11 visiteurs en ligne

sondage qualité

1-mauvais - excellent-5
Design :
1 5
Ergonomie :
1 5
Contenu :
1 5
Structure :
1 5
Ensemble :
1 5
1-mauvais - excellent-5
Commentaire :