Back to Code Snippets / Powrót do Strzępów Kodu


[bits 16]
[org 0x100]

; niech data seg bedzie tym samym segmentem co code seg
; es zresta tez ;>
push cs
pop ds
push cs
pop es

; ok, zrzucamy segment, http://www.ctyme.com/intr/rb-0607.htm
lea bx, [tu_zrzucamy_bootsect]
mov ah, 0x02
mov al, 1 ; ilosc sektorow do odczytania
mov ch, 0 ; numer cylindra (8 dolnych bitow numeru)
mov cl, 1 ; numer sektora (5 bitow, 0-5, reszta to gorny numer cylindra)
mov dh, 0 ; numer glowicy
mov dl, 0x80 ; numer dysku + 0x80
int 0x13

; utworzenie pliku, http://www.ctyme.com/intr/rb-2778.htm
mov ah, 0x3c
xor cx, cx
lea dx, [nazwa_pliku]
int 0x21

mov bx, ax ; file handle leci do bx

; zapisanie do pliku, http://www.ctyme.com/intr/rb-2791.htm
mov ah, 0x40
mov cx, 0x200 ; 1 sektor ma 512 bajtow ;>
lea dx, [tu_zrzucamy_bootsect]
int 0x21

; zamkniecie pliku, http://www.ctyme.com/intr/rb-2782.htm
mov ah, 0x3e
int 0x21

; wyjscie z progsa, http://www.ctyme.com/intr/rb-2974.htm
mov ax, 0x4c00
int 0x21

; dane
nazwa_pliku:
db 'bootdump.bin',0

tu_zrzucamy_bootsect:

Add a comment:

Nick:
URL (optional):
Math captcha: 6 ∗ 10 + 3 =