Я пытался понять, как отображать текст в режиме VGA на днях, поэтому я задал этот вопрос .Теперь я понимаю, как это работает, но через пробу произошла ошибка.
Меня заинтересовало то, что @Margaret Bloom упомянул в одном из комментариев:
Кстати, эта часть между чтением спецификацийи «что помещать в каждый регистр» (код AKA) - вот где все самое интересное.
Для меня это говорит о том, что можно узнать, какие регистры использовать и что в них помещатьпросто прочитав спецификации.
Используя пример текстового режима VGA, Что может предложить ввести адрес 0xB8000
в ax
и dx
, положение символа в di
и символи цветовой код в ES:DI
?
Также при чтении кода C, такого как ниже,
void WriteCharacter(unsigned char c, unsigned char forecolour, unsigned char backcolour, int x, int y)
{
uint16_t attrib = (backcolour << 4) | (forecolour & 0x0F);
volatile uint16_t * where;
where = (volatile uint16_t *)0xB8000 + (y * 80 + x) ;
*where = c | (attrib << 8);
}
как узнать, как поместить значения в соответствующие регистры?
Знание этого в будущем поможет мне, так как я смогу понять, что и куда помещать данные в будущем.
Я надеюсь, что все это имеет смысл.Если нет, не стесняйтесь просить меня уточнить.
Документация связанный слышать