点2像素在一起

kim*_*yun 2 graphics x86 assembly 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
Run Code Online (Sandbox Code Playgroud)

谢谢!

nrz*_*nrz 5

有两个错误.

首先,8位/像素的BIOS 320x200是视频模式13h(19d),而不是13d你所拥有的.

要解决这个问题:

mov ax,13h
int 10h
Run Code Online (Sandbox Code Playgroud)

另一个错误是你写ax而不是al视频内存.替换axal或任何其他8位寄存器(ah,bl,bh,cl,ch,dl,dh):

mov al,1
mov [es:di],al
inc di
mov [es:di],al
Run Code Online (Sandbox Code Playgroud)

应该这样做.