2

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

怎么了?

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

谢谢!

4

1 回答 1

5

有两个错误。

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

要解决这个问题:

mov ax,13h
int 10h

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

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

那应该这样做。

于 2012-12-29T11:20:35.680 回答