OSDev

для всех
Текущее время: 09 май 2024, 22:52

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Текстовый вывод
СообщениеДобавлено: 29 ноя 2010, 13:13 

Зарегистрирован: 29 ноя 2010, 13:07
Сообщения: 6
Набрал код, запускаю его из чистой дос, но ничего не происходит, экран совершенно чистый.
То ли лыжи не едут, то ли у меня с головой чего.
Подскажите пожалуйста.

Код:
void write_string(int colour, const char *string)
{
   char *video=(char*)0xB8000;
   while(*string!=0)
   {
      *video=*string;
      string++;
      video++;
      *video=colour;
      video++;
   }
}

int main()
{
write_string(7, "Hello world!!!");
getch();
return 0;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текстовый вывод
СообщениеДобавлено: 29 ноя 2010, 14:04 

Зарегистрирован: 30 янв 2010, 19:44
Сообщения: 63
мб не та страница видео памяти?
попробуй дизасемблить.. или отладчиком его..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текстовый вывод
СообщениеДобавлено: 29 ноя 2010, 14:12 

Зарегистрирован: 29 ноя 2010, 13:07
Сообщения: 6
Пробовал менять страницы, ставил ему адреса 0xB9000 0xBА000, всё равно никакого эффекта, а дизассемлить и отладчиком ходить под досом не очень удобно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текстовый вывод
СообщениеДобавлено: 29 ноя 2010, 15:02 

Зарегистрирован: 30 янв 2010, 19:44
Сообщения: 63
Не знаю как твой компилятор преобразует адрес, но как я понимаю под досом не расширеный режим, а значит адресация должна быть сегмент:смещение.. Надо тебе дебагером посмотреть. По идее ссылаться должен на 0b80:0000 если я ничего не путаю..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текстовый вывод
СообщениеДобавлено: 29 ноя 2010, 16:14 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Ссылаться должен на B800:0000. Что же касается причины, надо дизассемблировать выполняемый файл и в нём смотреть, что там происходит -- это самый надёжный и верный путь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текстовый вывод
СообщениеДобавлено: 29 ноя 2010, 16:52 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Как вуже сказали, в чистом ДОС 16-битная адресация, а число 0xB8000 умещается только в 32-битном виде. Соответственно, надо использовать 32-битный расширитель, например dos4gw. Просмотри ключи сборки проекта, там найдёшь какой-нибудь расширитель.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текстовый вывод
СообщениеДобавлено: 29 ноя 2010, 17:09 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Но это будет уже не чистый ДОС :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текстовый вывод
СообщениеДобавлено: 29 ноя 2010, 17:54 

Зарегистрирован: 29 ноя 2010, 13:07
Сообщения: 6
0xB8000 прекрасно умещается в 16тибитном режиме, поскольку на шине в 16тибитном режиме 20 разрядов, а значит максимальный адрес 0xfffff а это больше чем 0xb8000, да и если написать заменитель загрузочного сектора на ассемблере и писать по тому же адреса, значит дело либо в операционке которая перед тем грузиться, либо в том что компилер коряво компилит, вот я и хочу знать что именно. Потому что писать на ассемблере мне не в кайф.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текстовый вывод
СообщениеДобавлено: 29 ноя 2010, 18:01 

Зарегистрирован: 30 янв 2010, 19:44
Сообщения: 63
читай мануал по 8086.. метод адресации


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текстовый вывод
СообщениеДобавлено: 29 ноя 2010, 18:30 

Зарегистрирован: 29 ноя 2010, 13:07
Сообщения: 6
я их прочитал поболее твоего, будут конкретные замечания или нет?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 132


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB