所以这是我的代码的一部分:
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开始,所以你们都意识到,即使我跳到开始,即使没有转移到另一页,颜色仍然消失,光标位置没有设置到我告诉他的位置,菜单显示,我做错了什么?
注意:在我再次跳回到开始之前,颜色和光标位置正常工作。
答案 0 :(得分:1)
首先删除jmp start
并将其替换为mov ah,0
和int 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