BIOS

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
(correct offset of jump instruction)
 
(4 intermediate revisions by 3 users not shown)
Line 2: Line 2:
 
|formattype=electronic
 
|formattype=electronic
 
|subcat=Firmware
 
|subcat=Firmware
 +
|extensions={{ext|bin}}, {{ext|rom}}
 
}}
 
}}
'''BIOS''' (Basic Input Output System), is a [[Read Only Memory|ROM]] chip containing code (firmware) to control peripherals attached to a [[PC]].
+
'''BIOS''' (Basic Input Output System), is a [[Read Only Memory|ROM]] chip containing code (firmware) to control peripherals attached to a [[wikipedia:PC]].
  
[[category:Low level instructions]] [[Category:File format details]]
+
The x86 BIOS entry point is located at physical address <code>0xfffffff0</code> (usually corresponding to 16 bytes from the end of the BIOS image) and is executed in 16-bit real mode; it usually contains a jump instruction (either far or near). There are no other guarantees about BIOS image layout, although many vendors have developed in-house formats.
 +
 
 +
[[UEFI]] firmware images usually contain an embedded [[Firmware File System]].
 +
 
 +
== Identification ==
 +
ROM images start with bytes {{magic|0xaa 0x55}}.
 +
At offset 3 the initialization vector is stored.
 +
In many cases this is a 3 byte jump instruction starting with hexadecimal value <code>0xE9</code>.
 +
Images for cards with PCI interface contain a 4 byte signature <code>PCIR</code>.
 +
Images for cards which support plug and Play feature contain a 4 byte signature <code>$PnP</code>.
 +
 
 +
== Sample files ==
 +
* http://minuszerodegrees.net/rom/rom.htm - many older ROM images without Plug and Play.
 +
* https://www.xtideuniversalbios.org/ - BIOS for IDE ATA hard disks.
 +
* http://rayer.g6.cz/romos/romose.htm - <code>romos.bin</code> for loading FreeDOS.
 +
* https://www.qemu.org/ - Download QEMU and extract or install → *.bin - ROM examples for cards with PCI interface.
 +
 
 +
== Links ==
 +
* [[Wikipedia:Option ROM|Wikipedia article]]
 +
* [http://www.coreboot.org/Bios_extract bios_extract]
 +
* [http://bioshacking.blogspot.com/2012/02/bios-disassembly-ninjutsu-uncovered-1st.html BIOS Disassembly Ninjutsu Uncovered]
 +
 
 +
[[category:Low level instructions]]
 +
[[Category:File format details]]
 +
[[Category:Booting]]

Latest revision as of 00:53, 6 April 2022

File Format
Name BIOS
Ontology
Extension(s) .bin, .rom

BIOS (Basic Input Output System), is a ROM chip containing code (firmware) to control peripherals attached to a wikipedia:PC.

The x86 BIOS entry point is located at physical address 0xfffffff0 (usually corresponding to 16 bytes from the end of the BIOS image) and is executed in 16-bit real mode; it usually contains a jump instruction (either far or near). There are no other guarantees about BIOS image layout, although many vendors have developed in-house formats.

UEFI firmware images usually contain an embedded Firmware File System.

[edit] Identification

ROM images start with bytes 0xaa 0x55. At offset 3 the initialization vector is stored. In many cases this is a 3 byte jump instruction starting with hexadecimal value 0xE9. Images for cards with PCI interface contain a 4 byte signature PCIR. Images for cards which support plug and Play feature contain a 4 byte signature $PnP.

[edit] Sample files

[edit] Links

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox