你好,我正试图清除DOS视频模式下的屏幕与此代码.
但是当我运行它的时候,点还在那里!
org 100h
mov ah, 0 ; set display mode function.
mov al, 13h ; mode 13h = 640x480 pixels, 256 colors.
int 10h ; set it!
mov cx, 10 ; column
mov dx, 10 ; row
mov al, 15 ; white
mov ah, 0ch ; put pixel
int 10h ; draw pixel
; ------- clear the screen ----------
; ------- doesn't work! dot is still there
mov ax,0B800h
mov es,ax
xor di,di
xor ax,ax
mov cx,2000d
cld
rep stosw
; -------------------------------------
;wait for keypress
mov ah,00
int 16h
mov ax, 4c00h ; exit to operating system.
int 21h
;======================================================
我试着用INT 10重新设置视频模式,但这给了我眨眼,这是我循环内不想要的
3条答案
按热度按时间4urapxun1#
您的程式码有一些问题。
首先,BIOS模式13 h在8位/像素时不是640 x480,而是320 x200。
B800 h是BIOS文本模式的地址。BIOS图形模式使用A000 h。
所以应该是:
8位的320 x200占用320*200 = 64 000字节的显存。因此
cx
的值不正确。它应该是:5jvtdoz22#
对于文本模式,您可以使用以下简单过程
并在程序中调用它
31moq8wy3#
下一个代码可以在msdos 5.0上运行,它可以在vga模式下运行(640x480像素和16色调色板)。
我希望这能有所帮助。
请原谅我可能的错误。
代码已被重新编辑,以包括来自迈克尔佩奇的更正。谢谢迈克尔。
如果您需要阅读一些文档,可以在此处阅读:
Online ebook about vga programming