装配x86 - 传输页面时菜单的颜色消失了

时间:2016-05-08 14:23:53

标签: assembly

所以这是我的代码的一部分:

start:
    mov ax,@data
    mov ds,ax

    ;Set graphics mode 320x200 & 256 colors
     mov ax,13h
     int 10h

     mov al,00h
     mov ah,0
     int 10h
     mov ah,09h
     mov bl, 0c3h ; 3 = light blue , c = lightning (for unknown reason) & red line
     mov cx, 40   ; numbers of characters to color
     int 10h
     mov dx, offset menu    
     int 21h    
    ;set cursor location(dh,dl) (I'm hiding the cursor)
     mov dl, 16  ; column. 
     mov dh, 30  ; row. 
     mov ah, 02h
     int 10h         
     call Beep  
    jmp start   

我在最后添加了jmp开始,所以你们都意识到,即使我跳到开始,即使没有转移到另一页,颜色仍然消失,光标位置没有设置到我告诉他的位置,菜单显示,我做错了什么?

注意:在我再次跳回到开始之前,颜色和光标位置正常工作。

1 个答案:

答案 0 :(得分:1)

首先删除jmp start并将其替换为mov ah,0int 16h。这将使您有机会看到屏幕上显示的内容。

mov ax,13h
int 10h

mov al,00h
mov ah,0
int 10h

在这段代码中,您将屏幕设置了2次!第二次也是最后一次设置为40列25行的16色文本屏幕。

mov bl, 0c3h ; 3 = light blue , c = lightning (for unknown reason) & red line

您使用BIOS的“写字符和属性”功能,参数太少。你还应该定义:

mov al, " "  ;Space character
mov bh, 0    ;Display page 0
mov bl, 0C3h ;This chooses a cyan foreground on a red background