我正在尝试在汇编中使用全屏模式。我在 dos 中将颜色设置为浅蓝色,但每当我尝试将其与全屏模式合并时,颜色就会发生变化。它会变成类似绿色的东西。
有没有办法让它们互相兼容。我正在使用 Tasm;文本板; window 。谢谢。
这是我的宏
drawSquare MACRO color,cy,cx,dy,dx
mov ah,06
mov al, 0
mov bh,color
mov ch,cy
mov cl,cx
mov dh,dy
mov dl,dx
int 10h
endm
-------------------------------------------------
include macros.txt
.model small
.stack
.data
saveMode db ?
.code
main proc
mov ax, @data
mov ds, ax
call SetVideoMode
drawSquare 90h, 0h, 49h, 18h, 4fh
call RestoreVideoMode
mov ax, 4c00h
int 21h
main endp
SetVideoMode proc
mov ah, 0fh
int 10h
mov saveMode, al
mov ah, 0
mov al, 13h
int 10h
push 0A000h
pop es
ret
SetVideoMode endp
RestoreVideoMode proc
mov ah, 10h
int 16h
mov ah, 0
mov al, saveMode
int 10h
ret
RestoreVideoMode endp
end main
最佳答案
您设置了 256 色视频模式 13h。后来你用颜色 90h 画了一个盒子。
这与 DOS 屏幕(文本模式)的颜色不匹配,因为只有前 16 个颜色数字匹配!
如果您的 DOS 屏幕使用 BLUE=1,则选择颜色 1 作为宏调用的第一个参数。
如果您的 DOS 屏幕使用 GREEN=2,则选择颜色 2 作为宏调用的第一个参数。
关于assembly - 与 dos 下相比,全屏模式下的颜色不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33182605/