System operacyjny
Bootsector

; Adres startowy 0000:7c00
[ORG 0x07c00]
[BITS 16]            
mov ax, 0xb800         ; ustawiamy segment es na początek  
mov es,ax              ; pamięci karty video
 
mov byte [es:0],0x41   ; wpisujemy znak A w górny lewy róg 
mov byte [es:1],0x1f   ; ustawiamy atrybuty (kolor i tło)
 
loop1: jmp loop1       ; zapętlamy 
 
times 510 - ($-$$) db 0   ; uzupełniamy zerami do pozycji 510
 
dw 0x0aa55                ; wartość aa55 oznacza, 
                    ;że jest to sektor bootowalny
 

Kompilujemy poleceniem

nasm boot1.asm -fbin -o boot1.bin
Jest to format wyjściowy, w którym nie ma żadnych nagłówków a kod źródłowy w całości bezpośrednio zamieniany na kod maszynowy.

Tak przygotowany bootsector możemy przekopiować do pierwszego sektora dysku, pendrive czy innego nośnika np. poleceniem

dd if=./boot1.bin of=/dev/sdb1 bs=512 count=1

Można też tak przygotowany plik uruchomić bezpośrednio w emulatorze np.

qemu -hda ./boot1.bin


Tomasz Kapela, Kraków 2011-2020