FASM - Boot sector on USB don't work -


in first, sorry bad english, i'm french. @ moment, learn asm fasm test boot sector programming.

i have make simple boot program, have compiled , write boot.bin in first sector of usb.

but when boot on pc or in virtualbox, drive isn't found....

boot sector code:

;======================================================================= ;   simpliest 1.44 bootable image shoorick ;) ;======================================================================= _bs equ 512 _st equ 18 _hd equ 2 _tr equ 80 ;=======================================================================     org 7c00h     jmp start     nop ;=====================================================     db  "he-he os";     ; 8     dw  _bs             ; b/s     db  1               ; s/c       dw  1               ; rs     db  2               ; fats     dw  224             ; rde     dw  2880            ;      db  0f0h            ; media     dw  9               ; s/fat     dw  _st             ; s/t     dw  _hd             ; h     dd  0               ; hs     dd  0               ; --     db  0               ; drv     db  0               ; --     db  29h             ; ebr     dd  0               ; sn     db  "no name    ";  ; 11     db  "fat12   ";     ; 8 ;===================================================== start:     mov   ax,cs     mov   ds,ax     mov   cx,count     mov   si,hello     mov   bx,7     mov   ah,0eh @@:     lodsb     int   10h     loop  @b     xor   ah,ah     int   16h     int   19h  hello   db "hi! disk-invalid!" count = $ - hello    ;=======================================================================     rb 7e00h-2-$     db 055h,0aah ;======================================================================= 

this code provide examples of fasm's website.

there couple of reasons why bootloader wont work:

  1. the bootloader not in first sector of usb/floppy/etc.
  2. the bootloader not exactly 512 bytes long
  3. you missing 0xaa55 signature @ last 2 bytes of bootloader

in example assume have wrong bootloader size ( not 512 bytes )

try replacing

rb 7e00h-2-$ db 055h,0aah 

with

times 510-($-$$) db 0 dw 0xaa55      

this ensures file 512 bytes long , has required bootloader signature


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -