Seçkin Üye
Aşağıda bir bootloader kodumu vereceğim. Bu bootloader, BIOS üzerinden doğrudan ekrana "Hello, Bootloader!" yazdırmayı amaçlamaktadır. Ancak, kodda bir hata var ve bu nedenle düzgün çalışmıyor.
----
BITS 16 ; 16-bit gerçek mod kullanıyoruz
ORG 0x7C00 ; BIOS tarafından bellekte yükleneceği konum
start:
mov si, message ; SI registerine mesajın adresini koyar
call print_string ; Mesajı ekrana yazdırmak için alt yordamı çağır
hang:
jmp hang ; Sonsuz döngüye girer, burada kalır
print_string:
mov ah, 0x0E ; BIOS teletip fonksiyonu
.repeat:
lodsb ; SI'deki baytı yükler ve SI'yi arttırır
cmp al, 0 ; AL'de 0 varsa sonlandı
je .done
int 0x10 ; BIOS ekran yazma kesmesi
jmp .repeat
.done:
ret ; Alt yordamdan geri döner
message db 'Hello, Bootloader!', 0
times 510-($-$$) db 0 ; Geri kalan baytları 0 ile doldurur
dw 0xAA55 ; Bootloader imzası
----
Koddaki hata veya eksiklik nedir?
----
BITS 16 ; 16-bit gerçek mod kullanıyoruz
ORG 0x7C00 ; BIOS tarafından bellekte yükleneceği konum
start:
mov si, message ; SI registerine mesajın adresini koyar
call print_string ; Mesajı ekrana yazdırmak için alt yordamı çağır
hang:
jmp hang ; Sonsuz döngüye girer, burada kalır
print_string:
mov ah, 0x0E ; BIOS teletip fonksiyonu
.repeat:
lodsb ; SI'deki baytı yükler ve SI'yi arttırır
cmp al, 0 ; AL'de 0 varsa sonlandı
je .done
int 0x10 ; BIOS ekran yazma kesmesi
jmp .repeat
.done:
ret ; Alt yordamdan geri döner
message db 'Hello, Bootloader!', 0
times 510-($-$$) db 0 ; Geri kalan baytları 0 ile doldurur
dw 0xAA55 ; Bootloader imzası
----
Koddaki hata veya eksiklik nedir?