diff --git a/Readme.md b/Readme.md index 1d89d3c..1b8c973 100644 --- a/Readme.md +++ b/Readme.md @@ -1,22 +1,25 @@ -== Instruction == +# Instruction Build with - nasm -f bin mbr.asm -o mbr + `nasm -f bin mbr.asm -o mbr` Run with - qemu-system-x86_64 -boot a -fda mbr + `qemu-system-x86_64 -boot a -fda mbr` Debug with - qemu-system-x86_64 -boot a -fda mbr -s -S - gdb + `qemu-system-x86_64 -boot a -fda mbr -s -S` + then + `gdb` + ``` target remote localhost:1234 layout asm b *0x7c00 c + ``` -== ASM reg == +# ASM reg -=== In 16 bits === +## In 16 bits There is 4 main 16bits reg: AX, BX, CX, DX. You can access the 8 MSB from AX with AH and the 8 LSB with AL.( BH,BL, CH, CL) @@ -26,32 +29,33 @@ SP is stack pointer, BP is base pointer AX(AH, AL), BX(BH, BL), CX(CH, CL), DX(DH, DL), SI, DI, SP, BP -=== In 32bits === +## In 32bits Main register are "Extended" to 32bits but 16bits of 8bits direct access is not possible anymore. EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP -=== In 64bits === +## In 64bits Prefixed by R RAX, RBX, RCX, RDX, RSI, RDI, RSP, RBP -== Bios Memory == - -0x0 - 0x03FF ;IVT -0x400 - 0x4FF ;BIOS Data -0x500 - 0x7BFF ;Unused -0x7C00 - 0x7D77 ;Bootloader -0x7E00 - 0x9FFFF ;Unused -0xA0000 - 0xBFFFF ;Video memory -0xB0000 - 0xB7777 ;Video memory monochrome -0xB8000 - 0xBFFFF ;Video memory color -0xC0000 - 0xC7FFF ;BIOS ROM -0x80000 - 0xEFFFF ;BIOS shadow memory -0xF0000 - 0xFFFFF ;BIOS System +# Bios Memory +Address range | Description +----------------------- | ----------------------- +0x0 - 0x03FF |IVT +0x400 - 0x4FF |BIOS Data +0x500 - 0x7BFF |Unused +0x7C00 - 0x7D77 |Bootloader +0x7E00 - 0x9FFFF |Unused +0xA0000 - 0xBFFFF |Video memory +0xB0000 - 0xB7777 |Video memory monochrome +0xB8000 - 0xBFFFF |Video memory color +0xC0000 - 0xC7FFF |BIOS ROM +0x80000 - 0xEFFFF |BIOS shadow memory +0xF0000 - 0xFFFFF |BIOS System -== Interrupt Vector Table == +# Interrupt Vector Table INT_NUM | Short Description PM ----------- | ---------------------- 0x00 | Division by zero @@ -74,8 +78,8 @@ INT_NUM | Short Description PM 0x11 | Alignment Check 0x12 | Machine Check 0x13 | SIMD Floating-Point Exception -0x14 | Virtualization Exception +0x14 | Virtualisation Exception 0x15 | Control Protection Exception -== BIOS IRQ == +# BIOS IRQ https://en.wikipedia.org/wiki/BIOS_interrupt_call