От: Прямая запись в видуепамять

Автор kol1978, 31 декабря 2024, 07:01:03

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

kol1978

Случайно наткнулся на пример...пример "подозрительный" - по виду не должен работать. В общем либо как исправить что бы пример кода типа "Hello World!" с непосредственной записью в видеопамять работал или другой аналогичный "сверх элементарный" пример? И еще что бы возможно было потом этот пример "вставить" в код модуля ядра что бы работать с видеопамятью не из юзерспейса а из пространства ядра?
Цитировать/*! Print on console using video memory */
#define VIDEO   ( (volatile char *) 0x000B8000 ) /* video memory address */
#define COLS    80 /* number of characters in a column */
#define ROWS    24 /* number of characters in a row */
#define ATTR    7  /* font: white char on black bacground */
/*! Print "Hello world!" */
void print_hello ()
{
        int i;
        char hello[] = "Hello World!";
        /* erase screen (set blank screen) */
        for ( i = 0; i < COLS * ROWS * 2 ; i++ )
                *( VIDEO + i * 2 ) = *( VIDEO + i * 2 + 1 ) = 0;
        /* print "Hello World!" on first line */
        for ( i = 0; i < 13 ; i++ )
        {
                *( VIDEO + i * 2 )     = hello;
                *( VIDEO + i * 2 + 1 ) = ATTR;
        }
        return;
}

#include <stdio.h>

int main(void) {
print_hello ()
}
---------------------------
gcc  VIDEO.c  -o VIDEO

31 декабря 2024, 07:01:48
Цитироватьkol@kol-virtualbox:~/ASM$ ./VIDEO

Ошибка сегментирования