Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > смена активной видео страницы


Автор: Dreamuchiy 11.11.2011, 23:38
меняю видеостраницу функцией 05h прерывания int 10h, страница вроде как меняется и курсор появляется, а текст не выводит, он появляется при возврате на нулевую страницу ! Что делать?

Автор: iff 13.11.2011, 13:47
Какой функцией для вывода текста пользуетесь?

Автор: Dreamuchiy 15.11.2011, 04:57
функция 09h прерывания int 10h.....

Автор: iff 15.11.2011, 14:38
Тогда всё понятно. Эта функция в качестве параметра требует номер страницы в регистре BH.
Как решить (вывод белой "*" начерном фоне):
1)
Код

mov ah,0fh
int 10h
mov ax,092ah
mov bh,bl
mov bl,07h
mov cx,1
int 10h

Здесь вначале узнаётся номер активной страницы (если он вам известен заранее, то можно просто написать mov bx,0107h - это для видеостраницы номер 1)
2)
Код

mov ax,0e2ah
int 10h

для этой функции не нужен в качестве параметра номер страницы. Она полезна, если осуществляется вывод текста как в консольном приложении. Если вы пишите действительно консольное приложение (пользователь вводит текст, а программа выводит текст), то лучше использовать соответствующиефункции int 21h

Автор: Dreamuchiy 15.11.2011, 16:20
int 21h это же DOSовское ! Я пишу (пытаюсь) мини ОС под себя. 

Автор: iff 15.11.2011, 19:28
Цитата(Dreamuchiy @  15.11.2011,  16:20 Найти цитируемый пост)
int 21h это же DOSовское ! Я пишу (пытаюсь) мини ОС под себя.  

Где указано это в данной теме?

Используйте 2 предложенных варианта!

Автор: Dreamuchiy 15.11.2011, 21:04
Я попробую ваши варианты ! Большое спасибо за совет ! Но я посмотрел у меня подпрограмма выводящая символ выглядит так:
Код

print:
call setcursor               ;подпрограмма установки позиции курсора
mov ah,09h
mov al,[symb]             ;загружаем символ
mov bh,[video_page]  ;загружаем номер страницы
mov bl,[color_symb]    ;цвет
mov cx,1
int 10h
ret

Программа вызывающая эту подпрограммму заранее заносит номер видеостраницы и символ непосредственно перед её вызовом

Автор: iff 16.11.2011, 14:24
Значит ошибка либо в setcursor, либо данные адрессуются неверно (например регистр ds указывает не на тот сегмент, где video_page).

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