shranet →
"Salom Dunyo!!!" bootloader
Anchadan beri qiziqardim. Yangi kompyuterni yoqqanda hech nima chiqmaydi. OS o'rnatgandan keyin esa, kompyuterni yoqish bilan vaqt o'tib o'zidan-o'zi OS ishga tushadi. Shu payt qiziq edi: Oddiy temir-tersak qanday qilib OS ning fayllarini o'qib, ishlatyapti. Bunga nima sababchi, buni qanday qilsa bo'ladi. Hullas bu yerda savollar juda ko'p.
Yaqinda ASM bilan qiziqib boshladim va bir paytlar o'zimga-o'zim bergan savollarga javob olishni boshladim. Shulardan birinchisi «Salom Dunyo!!!» bootloader (boot yuklagichi).
Kod:
Endi bu kodni boot.asm (umuman farqi yo'q) qilib saqlang va FASM da quyidagicha kompilyatsiya qiling:
boot.asm kompilyatsiyadan bexato o’tsa, yonida yana boot.bin fayli hosil bo’ladi. Endi biz hozircha binar ko’rinishidagi faylni oldik. Keyingi masala u faylni CD ning 0 head (bosh), 0 cylinder (silinder), 1-sector (sektor) iga yozishdir. Buning uchun UltraISO dan foydalanamiz.


Keyin F7 yoki «Инструменты» menyusidan «Записать образ CD…» ni tanlag va obrazni CD ga yozing. Keyin kompingizni o’chirib-yoqib, boot menu dan CD-ROM ni tanlasangiz shuncha qilgan mehnatingiz mahsulini ko’rasiz.
Yaqinda ASM bilan qiziqib boshladim va bir paytlar o'zimga-o'zim bergan savollarga javob olishni boshladim. Shulardan birinchisi «Salom Dunyo!!!» bootloader (boot yuklagichi).
Kod:
org 7c00h ; bios oqiydigan birinchi segment manzili
lea si, byte ptr text ; text manzilini olish
mov cx, len ; cx = len
next:
mov al, [si]
mov ah, 0eh
int 10h ; simvol chiqarish buyrugi
inc si
dec cx
cmp cx, 0
jnz next ; agar zf != 1
int 20h ; chiqish
x:
text db 'Salom Dunyo!!!'
len = ($ - x) ; $ o'zi turgan manzil
lea si, byte ptr text ; text manzilini olish
mov cx, len ; cx = len
next:
mov al, [si]
mov ah, 0eh
int 10h ; simvol chiqarish buyrugi
inc si
dec cx
cmp cx, 0
jnz next ; agar zf != 1
int 20h ; chiqish
x:
text db 'Salom Dunyo!!!'
len = ($ - x) ; $ o'zi turgan manzil
Endi bu kodni boot.asm (umuman farqi yo'q) qilib saqlang va FASM da quyidagicha kompilyatsiya qiling:
fasm boot.asm
boot.asm kompilyatsiyadan bexato o’tsa, yonida yana boot.bin fayli hosil bo’ladi. Endi biz hozircha binar ko’rinishidagi faylni oldik. Keyingi masala u faylni CD ning 0 head (bosh), 0 cylinder (silinder), 1-sector (sektor) iga yozishdir. Buning uchun UltraISO dan foydalanamiz.


Keyin F7 yoki «Инструменты» menyusidan «Записать образ CD…» ni tanlag va obrazni CD ga yozing. Keyin kompingizni o’chirib-yoqib, boot menu dan CD-ROM ni tanlasangiz shuncha qilgan mehnatingiz mahsulini ko’rasiz.



© 2009 |
Maqola uchun rahmat!
Faqatgina ro`yxatdan o`tgan foydalanuvchilar izohlarini qoldirishlari mumkin. Iltimos, o`z nomingiz bilan kiring, ro`yxatdan o`tmagan bo`lsangiz ro`yxatdan o`ting.