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)
谢谢!
有两个错误.
首先,8位/像素的BIOS 320x200是视频模式13h(19d),而不是13d你所拥有的.
要解决这个问题:
mov ax,13h
int 10h
Run Code Online (Sandbox Code Playgroud)
另一个错误是你写ax而不是al视频内存.替换ax用al或任何其他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)
应该这样做.