Пишу программу в виде загрузчика работающую в реальном времени. Пытаюсь разобраться с графикой, а именно 320х200 пикселей, при работе с спрайтами вознкает моргание, нашел что нужно второй буффер сделал вроде все как надо, и уже 100 раз перепроверял в емуляторе, виртуалке, работает, а когда запускаю у себя на железе все время что-то не так то только залитый экран каким-то цветом, то если без заливки, вобше куча странностей.
org 7c00h
use16
jmp start
e:
mov ax,cs
mov ds,ax
mov es,ax
ret
put_clear:
mov ax,8000h
mov ds,ax
mov al,200
mov ah,al
mov bx,0000h
put_clear0:
mov [bx],ax
add bx,02h
cmp bx,0FFFEh
jz e
jmp put_clear0
put_sprite:
mov ax,8000h
mov es,ax
mov di,0
mov bx,sprite
put_sprite0:
mov al,[bx]
cmp al,00h
jz e
stosb
inc bx
jmp put_sprite0
draw:
mov ax,8000h
mov ds,ax
mov ax,0A000h
mov es,ax
mov bx,0000h
mov di,0000h
draw0:
mov al,[bx]
stosb
cmp bx,0FFFFh
jz e
inc bx
jmp draw0
start:
call e
mov ax,0013h
int 10h
call put_clear ;; Заливка каким-то цветом, в буффер
call put_sprite ;; ложу "спрайт" в буффер
call draw ;; отображаю буффер на экран
mov ah,0
int 16h
db 250
db 250
db 250
db 200
db 200
db 200 ;; Это я так проверял баг, сделал растояние между кодом и спрайтом :D
sprite db 50,150,50,0
Код укоротил насколько смог. Чтоб было проще понять что да как но по сути все тот-же код, заливка в буффер, спрайт в буффер ( тут очень упростил ), и перенос с буффер в А000:0000.
PS: Не особо крутой кодер, тоесть совсем нет, только учусь!