मुझे पता है कि आकार में 8GB से अधिक ड्राइव तक पहुंचने के लिए आपको INT 13H विस्तारित कार्यों की आवश्यकता है। यह प्रश्न मानक INT 13H, फ़ंक्शन 02H को संदर्भित करता है।

मुझे यह भी पता है कि पुरानी 504एमबी हार्ड ड्राइव की सीमा का परिणाम था: 1024 सिलेंडर x 16 हेड्स x 63 सेक्टर्स x 512 बाइट्स = 528,482,304 बाइट्स।

लेकिन क्या यह हार्ड ड्राइव की सीमा Int 13h के कारण ही थी? क्या कोई विशेष कारण है कि हेड नंबर के लिए स्पेस (डीएच) के पूरे बाइट होने पर हेड नंबर 16 तक सीमित था? जाहिर है बाद में मानक को 255 तक हेड नंबर देने की अनुमति देने के लिए बदल दिया गया था (जिसके कारण 8GB की सीमा हुई)

कारण मैं पूछ रहा हूं क्योंकि मुझे एक ऐसे क्षेत्र को पढ़ने में परेशानी हो रही है जो हार्ड डिस्क में काफी हद तक निहित है। यह डिस्क में 3 गीगाबाइट से अधिक है।

इसका सटीक सी/एच/एस ऑफसेट है: सिलेंडर 485, हेड 147, सेक्टर 47

और जिस कोड का उपयोग मैं इसे पढ़ने का प्रयास करने के लिए कर रहा हूं वह इस प्रकार है:

mov bx, ds
mov es, bx        ;es takes ds
lea bx, secBuff   ;bx takes the offset of secBuff, a 512 byte buffer
mov ah, 2         ;function 2, read sectors
mov dl, 80h       ;source drive set to master drive
mov ch, 0e5h      ;lower 8 bits of cylinder number
mov dh, 93h       ;head number
mov cl, 6fh       ;upper 2 bits of cylinder number, 6 bit sector number
int 13h           ;read the sector into ds:secBuff

मैं इस तथ्य के लिए जानता हूं कि दूसरे विभाजन का बूट सेक्टर इस सी/एच/एस पर स्थित है, मैंने डिस्क संपादन प्रोग्राम का उपयोग करके चौगुनी जांच की है, लेकिन बूट सेक्टर को सेकेंडबफ में लोड करने के बजाय, यह शून्य से भर जाता है।

INT 13H निष्पादन के बाद AH में एक त्रुटि कोड देता है। यह जो कोड लौटाता है वह 00h है, जिसका अर्थ है कि जहां तक ​​इसका संबंध है, लोड सफल रहा।

क्या INT 13H 16 से अधिक प्रमुख संख्याओं को संभाल सकता है, या यह केवल उन क्षेत्रों तक पहुँचने में असमर्थ है जो पहले 504MB, या शायद 2GB ड्राइव से परे हैं?

2
My life is a bug. 5 नवम्बर 2017, 09:26

1 उत्तर

सबसे बढ़िया उत्तर

(यह पोस्ट पूछे गए प्रश्न का उत्तर देता है। मैंने यह देखने के लिए जाँच नहीं की है कि क्या बेतुकी लंबी टिप्पणी थ्रेड ने कोई प्रासंगिक जानकारी जोड़ी है जिसे प्रश्न में शामिल किया जाना चाहिए था।)

क्या INT 13h CHS BIOS फ़ंक्शन 16 या उससे अधिक संख्या वाले शीर्षों पर स्थित क्षेत्रों को संबोधित करने में सक्षम हैं, यह BIOS पर निर्भर करता है। सबसे पुराने BIOS कार्यान्वयन सीएचएस मूल्यों का कोई अनुवाद प्रदान नहीं करते हैं, सिलेंडर, हेड और सेक्टर नंबरों को सीधे ड्राइव इंटरफेस के माध्यम से असंशोधित करते हैं। ये BIOS कार्यान्वयन 16 से अधिक हेड वाली ड्राइव का समर्थन नहीं करते हैं क्योंकि मानक IBM PC AT कंट्रोलर, WD-1003, केवल 16 हेड्स का समर्थन करता है। चूंकि IDE CHS इंटरफ़ेस WD-1003 के साथ पीछे की ओर संगत है, यह सीमा किसी भी IDE ड्राइव पर भी लागू होती है जो (केवल) CHS एड्रेसिंग का समर्थन करती है।

नए BIOS किसी प्रकार का अनुवाद करेंगे, लेकिन जो अनुवाद उपयोग किया गया है वह सुसंगत नहीं है। आधुनिक BIOS, INT 13h के माध्यम से पारित CHS मानों को BIOS द्वारा रिपोर्ट की गई एमुलेटेड ज्यामिति का उपयोग करके एक LBA पते में परिवर्तित करेंगे और (यदि ड्राइव LBA एड्रेसिंग का समर्थन नहीं करता है) ड्राइव द्वारा रिपोर्ट की गई ज्यामिति का उपयोग करके CHS मानों में वापस। हालांकि अन्य अनुवाद योजनाओं का उपयोग किया गया है (उदाहरण के लिए सिलेंडर मूल्य का विस्तार करने के लिए शीर्ष मूल्य के ऊपरी दो बिट्स का उपयोग करना।) यहां तक ​​​​कि जब अब मानक सीएचएस/एलबीए/सीएचएस अनुवाद का उपयोग किया जाता है, तब भी विभिन्न BIOS कार्यान्वयन अलग-अलग अनुकरणीय ज्यामिति का उपयोग कर सकते हैं। एक ही ड्राइव।

यदि आपका BIOS आधुनिक CHS/LBA/CHS अनुवाद का उपयोग नहीं करता है तो आपको यह पता लगाना होगा कि यह किस अनुवाद का उपयोग करता है। यदि आपका BIOS इसका उपयोग करता है और आपने ड्राइव को कंप्यूटर (या संभावित रूप से एक ही पीसी पर नियंत्रकों के बीच) के बीच स्थानांतरित कर दिया है, जो विभिन्न एमुलेटेड ज्यामिति का उपयोग करते हैं, तो ड्राइव पर संग्रहीत कोई भी CHS मान (जैसे विभाजन तालिका, या FAT में) BPB) अब मान्य नहीं हैं और आपको या तो उन्हें अनदेखा करना होगा या यह पता लगाना होगा कि उनका अनुवाद कैसे किया जाता है। डिस्क पर संग्रहीत LBA मान सामान्य रूप से समस्या का कारण नहीं बनते हैं क्योंकि ये समान रहते हैं, चाहे नकली ज्यामिति कुछ भी हो।

हेल ​​लैंडिस द्वारा यह कैसे काम करता है -- CHS अनुवाद शीर्षक वाला एक व्यापक दस्तावेज़ है कि वर्णन करता है कि पुराने BIOS मेरे द्वारा ऊपर दिए गए विवरण से अधिक विस्तार से CHS अनुवाद कैसे करते हैं। विशेष रूप से यह 10 अलग-अलग BIOS प्रकारों का वर्णन करता है जो यह पहचानने में मदद कर सकते हैं कि आपका कंप्यूटर किस अनुवाद योजना का उपयोग कर रहा है। ध्यान दें कि यह दस्तावेज़ बहुत पुराना है, वास्तविक ऑपरेटिंग सिस्टम के बारे में जो कुछ भी बात करता है वह पुराना है।

3
Ross Ridge 5 नवम्बर 2017, 21:56