Basit Bootloader Yazımı (Nasm) | alicangonullu.biz

Basit Bootloader Yazımı (Nasm)

Merhabalar

Bu yazımda sizlere Nasm ile Basit Bootloader yazımını anlatacağım şimdiden kolay gelsin :)

Nasm nedir gibi tanımsal konulara girmeyeceğim zira nasm nedir bilmiyorsanız "burada ne işim var?" diye sorgulamalısınız :D

Gerekenler

- Qemu Virtual PC ( Link : https://qemu.weilnetz.de/w64/qemu-w64-setup-20181127.exe )
- Nasm ( Link : https://www.nasm.us/pub/nasm/releasebuilds/2.14.03rc2/ )

Şimdi bunları yüklediysek asıl dananın kuyruğunun koptuğu kısma gelelim.

Öncelikle Windowsta C:\Users\kullanici_adi\AppData\Local\nasm konumuna nasm yüklenir. Burada bir boot.asm dosyası oluşturalım ve içine şunları girelim (Burada A karakteri bayt sorunundan girildi siz baytı arttırırsınız mov ah kısmında geçersiniz :) )

; AliCanBlog Bootloader
mov ah,0x0E
mov al,'A'
int 0x10
; Bootloader
jmp $
times 510-($-$$) db 0
dw 0xAA55

02.07.2019 Edit : Yazıları eklemek için "int 0x10" altına şunu ekleyin :

mov al, 'L'
int 0x10

Örneğin :

; AliCanBoot
mov ah, 0x0E ;Yazı Girişi
mov al, 'A'
int 0x10
mov al, 'L'
int 0x10
mov al, 'I'
int 0x10
mov al, 'C'
int 0x10
mov al, 'A'
int 0x10
mov al, 'N'
int 0x10
; Bootloader
jmp $
times 510-($-$$) db 0
dw 0xAA55

Alternatif Olarak :

;Alternatif Kod

; AliCanBoot
BITS 16
start:
mov ax, 07C0h
add ax, 288
mov ss, ax
mov sp, 4096
mov ax, 07C0h
mov ds, ax
mov si, metin_giris

;Yazıyı gir
call yazdir_yazi
metin_giris db 'ALICAN', 0

yazdir_yazi:
mov ah, 0Eh

.tekrar:
lodsb
cmp al, 0
je .bitti
int 10h
jmp .tekrar

.bitti
ret

; Bootloader
times 510-($-$$) db 0
dw 0xAA55

Ayrıca "%include" kullanarak farklı .asm dosyalarını birleştirebilirsiniz.

Örneğin :

%include "mem.asm"

Ayrıca C dosyalarını uygulamak için "extern" komutunu kullanıyoruz. Bu komut kmain.c dosyasını devreye sokar.

extern kmain

call komutu ile de gerekli alan çağırılır.

call kmain

kmain voidini çağırdık 

-------------------------------------------------------------------

Ardından şu komutu çalıştıralım :

nasm boot.asm -f bin -o boot.bin

Sonrasında dir komutuyla boot.bin dosyasını görebiliriz. Ardından şu komut ile Qemu programını başlatalım.

C:/qemu/qemu-system-i386 boot.bin

Şu ekran gelecek ve A değerini göreceğiz :

Anlatımım bu kadardı. Umarım Nasm hakkında aklınızdaki önyargılar kırılmıştır 

Mutlu Geliştirmeler Dilerim :)


Belge / Video Eki


Ali Can Gönüllü | Blog