Nie wiem dlaczego ale moj maly bootloader niechce wyczyscic ekranu po wlaczeniu. Mozliwe ze gdzies mi wkradl sie blad :(
Znacie jakas dobra www opisujaca zwiezle pisanie po pamieci? Bo czytanie z pamieci do rejestrow to latwo ale w druga strone trudniej. Chodzi mi o wszystkie sposoby jakie sa :)
O to kod:
[SECTION .text]
[ORG 0x7C00]
[BITS 16]
;Ustawiamy rejestry segmentowe
bts_start: xor ax, ax
mov cs, ax
mov ds, ax
mov es, ax
;Czyscimy ekran
mov ax, bts_v_offset
call scr_clear
;Wyswietlamy napis
jmp $
I moja funkcja:
%define scr_d_height 25
%define scr_d_width 40
%define scr_d_segment 0xB800
%define scr_d_offset 0x0000
;------------------------------------------------------------------
;Czyscimy ekran i zerujemy przesuniecie karetki
;Wejscie: AX - adres przesuniecia karetki
scr_clear: pushf
pusha
;Czyscimy ekran
push ax
push es
mov ax, scr_d_segment
mov es, ax
mov di, scr_d_offset
xor ax, ax
cld
mov cx, (scr_d_height * scr_d_width * 2)
rep stosw
pop es
pop bx
;Zerujemy przesuniecie karetki
xor ax, ax
mov [bx], ax
popa
popf
ret