Skip to content

Latest commit

 

History

History
 
 

08-32bit-print

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Concepts you may want to Google beforehand: 32-bit protected mode, VGA, video memory

Goal: Print on the screen when on 32-bit protected mode

32-bit mode allows us to use 32 bit registers and memory addressing, protected memory, virtual memory and other advantages, but we will lose BIOS interrupts and we'll need to code the GDT (more on this later)

In this lesson we will write a new print string routine which works in 32-bit mode, where we don't have BIOS interrupts, by directly manipulating the VGA video memory instead of calling int 0x10. The VGA memory starts at address 0xb8000 and it has a text mode which is useful to avoid manipulating direct pixels.

The formula for accessing a specific character on the 80x25 grid is:

0xb8000 + 2 * (row * 80 + col)

That is, every character uses 2 bytes (one for the ASCII, another for color and such), and we see that the structure of the memory concatenates rows.

Open 32bit-print.asm to see the code. It will always print the string on the top left of the screen, but soon we'll write higher level routines to replace it.

Unfortunately we cannot yet call this routine from the bootloader, because we still don't know how to write the GDT and enter protected mode. Once you have understood the code, jump to the next lesson.