2010-01-26 18 views
5

स्पष्ट विधानसभा निर्देश वास्तव में एक एक्स 86 आर्किटेक्चर पर मास्टर बूट रिकॉर्ड बनाने के बारे में उत्सुक हैं। किसी भी अंतर्दृष्टि के लिए धन्यवाद।मास्टर बूट रिकॉर्ड में कौन सा असेंबली निर्देश लाइव रहते हैं?

अन्य आर्किटेक्चर का स्वागत है, लेकिन यह मुख्य रूप से X86 के लिए है।

उत्तर

13

एक मास्टर बूट रिकॉर्ड 512 बाइट्स से बना है, पिछले दो बाइट्स 0x55 0xAA होना चाहिए। यह 510 बाइट्स शेष है, विभाजन तालिका प्रविष्टियां 16 बाइट्स हैं, सबसे अधिक 4 विभाजन तालिका प्रविष्टियों में, जो 64 बाइट्स है। Here एक विभाजन प्रविष्टि जैसा दिखता है।

क्या शेष है असेंबलर कोड के 446 बाइट्स। आम तौर पर पहले कुछ बाइट्स में बूट पहचानकर्ता रिकॉर्ड होता है, जो बूट लोडर के डिस्क डेटा का वर्णन करता है, जैसे कि पहचानकर्ता, सिस्टम आईडी, नाम पर कुछ, लेकिन BIOS बूट कोड को 0x000: 0x07C00 पर अपेक्षा करता है, फिर यह स्वयं को कम करता है मेमोरी सेगमेंट में नीचे। बूट लोडर पर एक उदाहरण ट्यूटोरियल के लिए here देखें। विकीबुक पर here पर विस्तृत तकनीकी अवलोकन है।

केवल एक चीज है कि आप में से सावधान रहना होगा, बूट लोडर और कोड 446 बाइट्स अन्यथा पार्टीशन टेबल खराब हो जाता है अधिक नहीं होनी चाहिए इसलिए BIOS त्रुटि संदेश 'त्रुटि है। गुम ऑपरेटिंग सिस्टम 'या इसी तरह!

डिस्क के लिए द्विआधारी संकलित बूट सेक्टर लेखन आम तौर पर कंप्यूटर पंगा लेना के एक गंदा और खतरनाक तरीका शामिल होगा, लिनक्स के तहत आदेश होने के लिए समान होगा:

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

दूसरी तरह के एक कम इस्तेमाल किया जाता है स्तर डिस्क संपादक प्रोग्राम या यहां तक ​​कि सादे पुराने DEBUG.EXE (पुराने एमएसडीओएस डिस्केट्स पर पाया गया) या यहां तक ​​कि FreeDos का उपयोग कर भी।

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

तो मुझे याद है, DR.DOS (डिजिटल अनुसंधान डीओएस) MS-DOS के लिए एक प्रतिद्वंद्वी, बूट लोडर कोड पर एक पासवर्ड सुरक्षा पहले DR-डॉस को बूट का इस्तेमाल किया।

संपादित करें: आप कैसे BIOS 0x0000 के लिए लग रहा है के रूप में, वास्तव में उत्सुक हैं: 0x7C00, इस लिंक जिसमें आप मूल आईबीएम एक्सटी के BIOS कोड here डाउनलोड कर सकते हैं पर एक नजर है।

उम्मीद है कि यह मदद करता है, सर्वश्रेष्ठ संबंध, टॉम।

+0

"0x55 0xAA होना चाहिए" और जादू संख्या – stacker

+0

@Stacker नहीं कह रहा है: मैंने मूल BIOS कोड के लिंक को शामिल करने के लिए उत्तर संपादित किया है ... – t0mm13b

+0

@tommieb stingy^ – stacker

3

प्यार इन पुराने स्कूल विषयों ;-)

यहाँ दो कोडांतरक listings रहे हैं, क्योंकि आप के लिए explicit assembly instructions

+0

उन पुराने स्कूल के विषय कभी उबाऊ नहीं होते हैं! ;) – t0mm13b

+0

आपका स्वागत है! :);) उन पुराने स्कूल विषयों को जीवित रखें! – t0mm13b

2

यहाँ पूछना है एक playable Tetris game विधानसभा में लिखा है, और जो एक x86 बूट क्षेत्र में फिट बैठता है। मैं केवल यदि आप दस लाइनों पूरा कर सकता है इस बूट होगा जो अपने नियमित रूप से ओएस का एक संस्करण को देखा।

+0

यह कमाल है। : डी – iokevins

संबंधित मुद्दे