So, the memory from 0x7c00 to 0x7dff is occupied. Is there any other part of RAM occupied?
If I am programming an operating system, can I use all RAM except 0x7c00, can I use ox7dff for my own purposes? Or are there any other parts that are filled with “valuable” information at boot time that I can’t cover?
I know that at a given moment, I can overwrite the MBR (chain loading) loaded on the memory. My question focuses on which parts of the memory are available for the operating system?
Sorry, my English is not good. Thank you for your answers!
For a more detailed explanation of how to detect available memory, the contents of the BIOS memory map can be found in OSDev.
I know that at startup, B IOS loads the first sector (512 bytes) of the predefined device driver on memory 0x7c00, and then jumps to that address. < p>
So, the memory from 0x7c00 to 0x7dff is occupied. Is there any other part of RAM occupied?
If I am programming an operating system, can I use all RAM except 0x7c00, can I use ox7dff for my own purposes? Or are there any other parts that are filled with “valuable” information at boot time that I can’t cover?
I know that at a given moment, I can overwrite the MBR (chain loading) loaded on the memory. My question focuses on which parts of the memory are available for the operating system?
Sorry, my English is not good. Thank you for your answers!
With any remote BIOS, you can use BIOS Int 15/AX=E820h call to get memory mapping information. This will tell you that you can use it for your operating system What memory.
For a more detailed explanation on how to detect available memory, the content of the BIOS memory map can be found in OSDev.