Вопрос про вывод пикселей на экран
Буду очень если кто-нить выложит приметивный текст на форум с коментами или без них, главное, чтоб он работал. А то я уже запарился ковырять ошибки из книжных вариантов, еще не одного действительно работающего с начала до конца примера не наковырял, конечно наверно мало искал...
Вообщем я поковыряю пока, если кто чего напишет буду оч благодарен...
Или прямо в память!
Долго не был в сети, вроде с пиксилями разобрался, пока вроде работает но бывают траблы... а вот пример хорошо бы было все же посмотреть, чтоб синус рисовал хотябы. У меня просто скачками как то получается. Правда сидел над этим не очень много, так как запарок хватает.
1.При разрешении 320*200 размер буфера: 320*200=64 000,тоесть 64 кило (байтов),при этом режиме доступно 256 цветов,аддрес первого пикселя-0,последнего собственно 63 999...
x=0 x=1 ... x=318 x=319
y=0 0 1 ... 318 319
y=1 320 321 ... 638 639
... ... ... ... ... ...
Адресс пикселя=320*y+x
(Initialization)
mov ah,0h
mov al,13h
int 10h
(Close graph)
mov ah,00h
mov al,03h
int 10h
(Example for FASM with FPU)(несовсем то :D )
org 100h
mov ax,13h
int 10h
push 0A000h
pop es
mov dx,3C8h
xor al,al
out dx,al
inc dl
mov cx,64
vga_palette:
out dx,al
out dx,al
out dx,al
inc al
loop vga_palette
xor di,di
xor dx,dx
finit
fld [y_top]
fstp [y]
screen:
xor bx,bx
fld [x_left]
fstp [x]
row:
finit
fldz
fldz
mov cx,63
iterate:
fld st0
fmul st0,st0
fxch st1
fmul st0,st2
fadd st0,st0
fxch st2
fmul st0,st0
fsubp st1,st0
fxch st1
fadd [y]
fxch st1
fadd [x]
fld st1
fmul st0,st0
fld st1
fmul st0,st0
faddp st1,st0
fsqrt
fistp
cmp ,2
ja over
loop iterate
over:
mov al,cl
stosb
fld [x]
fadd [x_step]
fstp [x]
inc bx
cmp bx,320
jb row
fld [y]
fsub [y_step]
fstp [y]
inc dx
cmp dx,200
jb screen
xor ah,ah
int 16h
mov ax,3
int 10h
int 20h
x_left dd -2.2
y_top dd 1.25
x_step dd 0.009375
y_step dd 0.0125
x dd ?
y dd ?
i dw ?
Скоро дам нормальный соурс,просто времени нет!