2010-09-15 14 views
11

एमएस-डॉस एक COM या EXE फ़ाइल को स्मृति में लोड करने के लिए क्या कदम उठाता है? क्या यह अभी भी ऑनलाइन संदर्भ है कि यह कैसे होता है? सबसे अच्छा मैं सोच सकता हूं कि संभवतः डॉसबॉक्स स्रोत का जिक्र है।डॉस प्रोग्राम को स्मृति में कैसे लोड करता है?

+0

पैटरसन, डॉस के मूल लेखक से पूछो: http: // dosmandrivel। blogspot.com/ – vulkanino

उत्तर

17

जब कमांड.com को .com या .exe फ़ाइल निष्पादित करने के लिए कहा जाता है, तो यह इंटरप्ट सेवा 21h/AH = 4B, EXEC सेवा को कॉल करेगा। यह फोन करने के कार्यक्रम के लिए के लिए है:

  • एक डॉस EXEC पैरामीटर ब्लॉक का निर्माण (, कमांड लाइन तर्क, FCBs वातावरण चर के बारे में जानकारी भी शामिल है और वापसी पर मूल्यों रजिस्टर) (देखें http://www.delorie.com/djgpp/doc/rbinter/it/90/15.html)
  • मुक्त सभी स्मृति बुला कार्यक्रम
  • सेटअप बुला तर्क का उपयोग नहीं कर रहा है पंजीकृत करता
    • आह = 4BH ('EXEC' सेवा प्रकार)
    • अल = 00h ('लोड और निष्पादित' समारोह)
    • डी एस: dx -> कार्यक्रम का नाम
    • तों: bx -> ptr वापसी रीसेट ढेर सूचक और त्रुटियों के लिए परीक्षण पर पैरामीटर ब्लॉक exec को
  • कॉल बाधा 21h

जब बाधा 21h कहा जाता है (यहां जहां यह मेरे लिए धुंधला हो जाता है): स्मृति के

  • एक पेज गठबंधन ब्लॉक आवंटित किया जाता है
  • फाइल एक्सटेंशन नजरअंदाज कर दिया है, बजाय डॉस पहले की जाँच करेगा हस्ताक्षर "एमजेड" या "जेडएम" के लिए फ़ाइल के दो बाइट्स यदि कोई EXE है, और COM के लिए कोई हस्ताक्षर नहीं है।
exe ​​के लिए

:

  • exe ​​हैडर प्रारंभिक रजिस्टर के लिए पढ़ने के लिए है
  • स्थानांतरण तालिका (http://en.wikipedia.org/wiki/Relocation_table देखें) पढ़ा जाता है और दूर संकेत स्मृति में exe से
  • प्रतिलिपि कोड अनुभाग को महत्व देता है समायोजित कर रहे हैं मेमोरी
  • सेटअप रजिस्टर मान
    • AL, एएच ड्राइव अक्षर स्थिति
    • डी एस, ES -> पीएसपी खंड (देखें http://en.wikipedia.org/wiki/Program_Segment_Prefix)
    • एसएस: सपा -> ढेर सूचक (exe हेडर में निर्धारित)
  • सीएस के लिए कूद: आईपी -> प्रवेश बिंदु (exe हेडर में निर्धारित, रिश्तेदार कार्यक्रम के शुरू करने के लिए)
कॉम के लिए

:

  • प्रति पूरे।स्मृति में कॉम फ़ाइल
  • सेटअप रजिस्टर महत्व देता
    • AL, एएच ड्राइव अक्षर स्थिति
    • सीएस, डी एस, ES, एस एस -> पीएसपी खंड
    • सपा = अंतिम शब्द की भरपाई पहले 64k खंड
    • में उपलब्ध
  • आईपी करने के लिए कूद = 100h

कार्यक्रम अब क्रियान्वित किया जाना चाहिए।


नोट्स:

माइक्रोसॉफ्ट के KB दस्तावेज़ "लगाने निष्पादन योग्य फ़ाइलों में प्राथमिकता का क्रम" में, यह .com क्रियान्वित करने के लिए की उपयोग "MS-DOS EXEC समारोह (बीच में 21h सेवा 4BH)" का उल्लेख है और .exe फ़ाइल http://support.microsoft.com/kb/35284

तो हम इंट पर राल्फ ब्राउन के इंटरप्ट सूची देख सकते हैं 21/एएच = 4BH

और उपयोग का एक उदाहरण:

और डॉस एक्सई हेडर प्रारूप:

(यह कुछ Googling बंद आधारित है, इसलिए सुझाव जोड़ने के लिए संकोच न करें)

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