วันเสาร์ที่ 28 พฤศจิกายน พ.ศ. 2552

0x106 : Bootloader

หลังจากได้เตรียม Tool ที่ใช้ในการเขียน OS แล้วต่อไป ก็ได้เวลาสำหรับการเริ่มสักที โดยในขั้นแรกจะทำตัว Boot เปล่าๆก่อน ซึ่งเป็นโค๊ดภาษา Assembly

;#*******************************************
;# GreanNetworK Operating System
;# - Test Bootloader
;# boot.asm
;# 28/11/2552
;#*******************************************
BITS 16
ORG 0x7C00

JMP $

TIMES 510 - ($ - $$) db 0
DW 0xAA55

จากโค๊ดดังกล่าวพออธิบายได้ตามนี้....

BITS 16
เป็นการบอกให้ Processor รู้ว่าเป็นโค๊ดแบบ 16 บิท

ORG 0x7C00
เป็นการบอกให้ BIOS รู้ตำแหน่งเริ่มต้นของการทำงาน

JMP $
เป็นการทำ Loop แบบไม่สิ้นสุด(infinite loop)

TIMES 510 - ($ - $$) db 0
ใส่ค่า 0 ลงบน sector จำนวน 510 ตัว(แต่ละตัวมีค่า 1 byte)

DW 0xAA55
ใส่ Boot Signature

ข้อสังเกต - พื้นที่ที่ใส่เลข 0 ลงไปคือ 510 byte รวมกับ Signature คือ 2 byte จะมีขนาดเท่ากับ 512 byte ซึ่งเป็นขนาดที่สามารถเขียนลง sector จำนวน 1 sector ได้

ไม่มีความคิดเห็น: