admin tarafından 2019-07-06 09:43:13 tarihinde yazıldı. Tahmini okunma süresi 2 dakika, 6 saniye. 799 kere görüntülendi.
Disclaimer
Merhabalar
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 :)