Bel*_*esy 2 x86 assembly dos bios nasm
您好我正在尝试使用此代码清除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重置视频模式但是这让我在循环中不需要闪烁
您的代码存在一些问题.
首先,BIOS模式13h不是8位/像素的640x480,而是8位/像素的320x200.
B800h是BIOS文本模式的地址.BIOS图形模式使用A000h.
所以它应该是:
mov ax,0A000h
mov es,ax
8位的320x200消耗320*200 = 64000字节的视频内存.所以价值cx是不正确的.它应该是:
mov cx,32000d
cld
rep stosw