2015-10-17 3 views
2

Я пытаюсь использовать полноэкранный режим в сборке. Я установил цвет в синий цвет в dos, но всякий раз, когда я пытаюсь включить его в полноэкранный режим, цвет меняется. Он меняется на нечто вроде зеленого.Цвета не совпадают в полноэкранном режиме по сравнению с dos

Есть ли способ для его совместимости друг с другом. Я использую Tasm; TextPad; окна. Благодарю.

Вот мой макрос

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 
+0

Для DOS существуют только полноэкранные видеорежимы, и DOS не знает о проблемах с режимами Windows хост-системы. –

+0

Подумайте о комментировании своего кода asm! – Seki

ответ

3

Вы создали режим видео 256 цветов 13h. Позже вы рисуете коробку с цветом 90h.
Это не соответствует цвету вашего экрана DOS (текстовый режим), потому что соответствуют только первые 16 номеров цветов!

Если на экране DOS используется BLUE = 1, выберите цвет 1 в качестве первого параметра для вашего макросообщения.
Если ваш экран DOS использует GREEN = 2, тогда выберите цвет 2 в качестве первого параметра для вашего вызова макроса.

+0

ой, да. wow, спасибо – random

+1

@random, если это решило вашу проблему, тогда я рекомендую вам рассмотреть [принять его как ответ] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) , –

+0

спасибо за предложение. Я здесь немного новый. : D – random