Видеорежим 0B800

Тема в разделе "WASM.BEGINNERS", создана пользователем Izgoy, 3 июл 2009.

  1. Izgoy

    Izgoy New Member

    Публикаций:
    0
    Регистрация:
    24 июн 2009
    Сообщения:
    24
    Здравия.

    Двигаюсь по книге Калашникова.
    На диске пример - вывести в консоль рожицу синего цвета
    Код (Text):
    1.     mov ax,0B800h
    2.     mov es,ax
    3.     mov di,0
    4.  
    5.     mov ah,31
    6.     mov al,1
    7.     mov es:[di],ax
    8.  
    9.     mov ah,10h
    10.     int 16h
    11.  
    12.     int 20h
    проблемма в том, чо рожица то невылезает))
    наверно бред скажу, но я его скаж - может ли это быть из за того, что пример реальзован на разных процессорах?(у меня core duo) хотя разрядность регистров то одна..
    Вобщем, подскажите в чем ошибка. Дополнительная инфорамция приветствуется.
    Благодарю за внимание.
     
  2. JAPH

    JAPH New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    124
    поиск по слову "рожица"?
    http://www.wasm.ru/forum/viewtopic.php?pid=198557#p198557

    Код (Text):
    1. mov ax, 3
    2. int 0x10
    многих спасало
     
  3. Limp

    Limp Roman

    Публикаций:
    0
    Регистрация:
    3 дек 2008
    Сообщения:
    10
    Калашников писал примеры под ДОС, вы же запускаете прогу в консоли, нужно установить видео режим –

    Код (Text):
    1. mov ah,00h
    2. mov al,03h
    3. int 10h
    4.  
    5. mov ax,0B800h
    6. mov es,ax
    7. mov di,0
    8. mov ah,31
    9. mov al,1
    10. mov es:[di],ax
    11. mov ah,10h
    12. int 16h
    13. int 20h
     
  4. Izgoy

    Izgoy New Member

    Публикаций:
    0
    Регистрация:
    24 июн 2009
    Сообщения:
    24
    Точно! Я сначала думал, что 0B800 и есть режим, а это только сегмент дисплея в текстовом режиме, Спасибо вам.
    Про ДОС - я понимаю что эти программки под дос написаны, но я думал, что DOS машина(не помню как называется точно, когда com приложения запускаются) все делает сама)))))
    Благодарю за помощь.
     
  5. Izgoy

    Izgoy New Member

    Публикаций:
    0
    Регистрация:
    24 июн 2009
    Сообщения:
    24
    хм.. тут процедура которая по идее проверяет видеорежим
    Код (Text):
    1. check_video proc ; Проверяем на текстовый режим монитора и на текущую видео страницу
    2.     mov ah, 0Fh
    3.     int 10h
    4.     cmp ax, 3h
    5.     je ok_video
    6.  
    7.     mov ax, 3h
    8.     int 10h
    9.  
    10. ok_video:
    11.     cmp bh, 0
    12.     jz ok_page
    13.  
    14.     mov ax, 0500h
    15.     int 10h
    16.  
    17. ok_page:
    18.     ret
    19. check_video endp
    после этого моя прога должна выводить сообщение на экран, типо такого:
    Код (Text):
    1. mov ah, 9
    2. mov dx, offset msg
    3. int 21h
    но невыводит. посмотрите, где накосячил? второй час пошел, все думаю...
     
  6. JAPH

    JAPH New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    124
    В ah возвращается число столбцов, и только в al номер режима. Посему cmp al, 3.
    И ds:dx должен указывать на строку. Уверены, что он правильно настроен,- на тот сегмент, в котором строка?
     
  7. Izgoy

    Izgoy New Member

    Публикаций:
    0
    Регистрация:
    24 июн 2009
    Сообщения:
    24
    да, благодарю вас JAPH, работает.