Основы графики
  Я взялся переделывать алгоритмы, находящиеся на сайте faceH0r, написанные на С++, на ассемблер. Вопросы и всякие 
реплики можете спокойно посылать на jnz@yandex.ru. Будьте уверены, без ответа не останетесь.
  В данном коде есть условные переходы, обращающеиеся на метки @F или @B. @F(Forward) означает, что обращение 
происходит к ближайшей метке @@ после вызова, а @B(Back) - к ближайшей @@ до вызова.

Вывод точки на экран
	

DrawPixel	proc	x,y,color:dword
	mov	eax,[y]
	mov	edx,[p_Buffer]
	imul	eax,[scr_Width]
	add	eax,[x]
	mov	ecx,[color]
	mov	[edx+eax*4],ecx
	ret
DrawPixel	endp
Рисование горизонтальной линии

DrawHorLine	proc	x1,x2,y,color:dword
	mov	eax,[y]
	mov	edx,[p_Buffer]
	mov	ecx,[x2]
	mov	ebx,[x1]
	imul	eax,[scr_Width]
	add	eax,ebx
	sub	ecx,ebx
	jns	@F
		neg	ecx
		std
	@@:
	inc	ecx
	lea	edi,[edx+eax*4]
	mov	eax,[color]
	rep	stosd
	cld
	ret
DrawHorLine	endp
Рисование вертикальной линии

DrawVerLine	proc	y1,y2,x,color:dword
	mov	ebx,[scr_Width]
	mov	edx,[p_Buffer]
	mov	eax,[y1]
	imul	eax,ebx
	shl	ebx,2
	mov	ecx,[y2]
	sub	ecx,[y1]
	jns	@F
		neg	ecx
		neg	ebx
	@@:
	inc	ecx
	add	eax,[x]
	shl	eax,2
	add	edx,eax
	mov	eax,[color]
	@@:
		mov	[edx],eax
		add	edx,ebx
		dec	ecx
	jnz	@B
	ret
DrawVerLine	endp
Рисование залитого прямоугольника

DrawFillRect	proc	x1,y1,x2,y2,color:dword
	mov	ebx,[scr_Width]
	mov	ecx,[y2]
	mov	edx,[y1]
	mov	eax,ecx
	sub	eax,edx
	jns	@F
		neg	eax
		xchg	ecx,edx
	@@:
	inc	eax
	push	eax
	mov	eax,edx
	imul	eax,ebx
	mov	ecx,[x2]
	mov	edx,[x1]
	mov	edi,ecx
	sub	edi,edx
	jns	@F
		neg	edi
		xchg	ecx,edx
	@@:
	inc	edi
	mov	esi,edi
	sub	ebx,edi
	shl	ebx,2
	add	eax,edx
	mov	edx,[p_Buffer]
	lea	edi,[edx+eax*4]
	mov	eax,[color]
	pop	edx
	@@:
		mov	ecx,esi
		rep	stosd
		add	edi,ebx
		dec	edx
	jnz	@B
	ret
DrawFillRect	endp
Если в этом коде существуют непонятные вам обозначения, либо возникли другие проблемы, связанные с кодом, то необходимо прочитать оригинальную статью Основы графики.
Статью написал jnz 18.07.2005
Используются технологии uCoz