点2像素在一起

时间:2012-12-29 11:12:29

标签: assembly graphics x86 dos framebuffer

我在第一个像素旁边点了一个像素但结果却不同了。第二个像素远离第一个像素。

怎么了?

org 100h
;change to 320x200 graphic mode
mov ax, 13
int 10h

;frame buffer location
push 0xa000
pop es
xor di, di

;dot 2 pixels
mov ax, 1
mov [es:di], ax
inc di
mov [es:di], ax

;prevent ending
a:
jmp a

谢谢!

1 个答案:

答案 0 :(得分:5)

有两个错误。

首先,8位/像素的BIOS 320x200是视频模式13h19d),而不是13d

修复它:

mov ax,13h
int 10h

另一个错误是您将ax而不是al写入视频内存。将ax替换为al或任何其他8位寄存器(ahblbhclchdldh):

mov al,1
mov [es:di],al
inc di
mov [es:di],al

应该这样做。