Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для Windows/Dos > символы в windows xp


Автор: ALEKSANDR0 26.9.2009, 00:00
Прошу прощения что снова обращаюсь за помощью.
суть проблемы: в данной программе на экране должна появиться белая рожица на синем фоне.
в windows 98 всё работает, а в XP просто чёрный экран.
Код

CSEG segment
org 100h
_beg:
        mov ax,0B800h
        mov es,ax
        mov di,0

        mov ah,31
        mov al,1
        mov es:[di],ax

        mov ah,10h
        int 16h

        int 20h

CSEG ends
end _beg

подскажите пожалуйста, возможно ли сделать чтоб работало на XP?
сохраняю в кодировке DOC-866. ассемблирую в MASM 6.11
Заранее Спасибо1

Автор: Goodwin98 26.9.2009, 00:08
Код

CSEG segment
org 100h
_beg:
    mov ax,03
    int 10h
        mov ax,0B800h
        mov es,ax
        mov di,0

        mov ah,31
        mov al,1
        mov es:[di],ax

        mov ah,10h
        int 16h

        int 20h

CSEG ends
end _beg

Вообще это установка видеорежима. По идее он 3-й и стоит, но для работы его нужно ставить принудительно

Автор: piritus 26.9.2009, 13:58
Вобще желательно проверять видеорежим и установленную страницу:

Код

Proverka_video proc
    mov ah,0fh
    int 10h

Mode:
    cmp al,3
    je V_page
    
    mov ax,0003h
    int 10h
    
V_page:
    cmp bh,0
    je End_prov_vid
    
    mov ax,0500h
    int 10h
    
End_prov_vid:
    ret
Proverka_video endp

а в программе вызывать 
Код

call Proverka_video

Автор: Goodwin98 26.9.2009, 15:17
Цитата(piritus @  26.9.2009,  16:58 Найти цитируемый пост)
Вобще желательно проверять видеорежим и установленную страницу:


А смысл? В ХР такая особенность эмуляции, что перед работой с виделпамятью нужно установить видеорежим, даже несмотря на то, что такой стоит по умолчанию.

Автор: ALEKSANDR0 26.9.2009, 16:26
Всем БОЛЬШОЕ СПАСИБО за помощь!!!
заработало, когда добавил 
Код

    mov ax,03
    int 10h

Прошу прощения за беспокойство, просто когда начинаешь изучать и испытываешь на двух системах, то начинаешь теряться, а благодаря существовканию Вашего форума есть где спросить помощи smile 

Автор: piritus 26.9.2009, 17:45
Цитата(Goodwin98 @  26.9.2009,  20:17 Найти цитируемый пост)
А смысл? В ХР такая особенность эмуляции, что перед работой с виделпамятью нужно установить видеорежим, даже несмотря на то, что такой стоит по умолчанию.


Имеется в виду не только видеорежим проверять/устанавливать, но и проверять текущую видео страницу, т.к. она не всегда может быть нулевой (некоторые программы ее меняют, но не возвращают обратно). Для этого нужно использовать функцию 05h с параметром 00h прерывания 10h

Автор: airyashov 28.9.2009, 08:02
просто в xp консоль не есть DOS-эмуляция, помоему если вызывать command все ок

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)