2010-01-26 34 views

Trả lời

13

Một Master Boot Record được tạo thành từ 512 byte, hai byte cuối cùng phải được 0x55 0xAA. Còn lại 510 byte, mục bảng phân vùng là 16 byte, tại 4 mục bảng phân vùng lớn nhất, là 64 byte. Here là mục nhập phân vùng trông như thế nào.

Còn lại 446 byte mã bộ mã hóa. Thông thường, vài byte đầu tiên bao gồm một bản ghi nhận dạng khởi động, mô tả dữ liệu đĩa của bộ nạp khởi động, chẳng hạn như mã định danh, id hệ thống, nhưng chỉ một vài, sau đó BIOS dự kiến ​​mã khởi động ở 0x000: 0x07C00, sau đó nó tự định vị lại trong phân khúc bộ nhớ. Xem here để biết hướng dẫn ví dụ về bộ nạp khởi động. Có một tổng quan kỹ thuật chi tiết về WikiBooks về nó here.

Điều duy nhất bạn phải cẩn thận, là mã bộ nạp khởi động không được vượt quá 446 byte nếu không, bảng phân vùng sẽ bị hỏng và do đó thông báo lỗi BIOS 'Lỗi. Thiếu hệ điều hành 'hoặc tương tự!

Viết boot sector biên soạn nhị phân vào đĩa sẽ bao gồm một cách lộn xộn và nguy hiểm của điều chỉnh các máy tính thông thường, trong Linux lệnh sẽ tương tự như:

 
# Assume that /dev/hda1 is the first hard disk then... 
dd if=mybootldr.bin of=/dev/hda1 bs=512 cnt=1 

Cách khác liên quan đến việc sử dụng một thu nhập thấp chương trình biên tập đĩa cấp hoặc thậm chí sử dụng DEBUG.EXE cũ (được tìm thấy trên các đĩa CDDOS cũ) hoặc thậm chí sử dụng FreeDos.

 
C:\DEBUG.EXE mybootldr.bin 
-W 100 0 0 1 
-Q 

Nếu tôi nhớ, DR.DOS (Digital Research DOS) là đối thủ của MS-DOS, đã sử dụng mật khẩu bảo vệ trên bộ nạp khởi động trước khi khởi động DR-DOS.

Chỉnh sửa: Nếu bạn thực sự tò mò về cách BIOS tìm 0x0000: 0x7C00, hãy xem liên kết này để tải xuống mã BIOS gốc của IBM XT here.

Hy vọng điều này sẽ giúp, Trân trọng, Tom.

+0

+1 cho "phải là 0x55 0xAA" và không nói số ma thuật – stacker

+0

@Stacker: Tôi đã chỉnh sửa câu trả lời để bao gồm một liên kết đến mã BIOS ban đầu ... – t0mm13b

+0

@tommieb không được keo kiệt^ – stacker

3

Tình yêu các chủ đề học cũ ;-)

đây là hai lắp ráp listings vì bạn yêu cầu explicit assembly instructions

+0

Những chủ đề học cũ không bao giờ nhàm chán! ;) – t0mm13b

+0

Bạn được chào đón! :);) Giữ những chủ đề trường học cũ còn sống eh! – t0mm13b

2

Đây là một playable Tetris game viết bằng lắp ráp, và trong đó phù hợp với một ngành x86 khởi động. Tôi thấy một biến thể này sẽ khởi động hệ điều hành thông thường của bạn chỉ khi bạn có thể hoàn thành mười dòng.

+0

Điều đó thật tuyệt vời. : D – iokevins

Các vấn đề liên quan