अर्थ मैं इस एनएएसएम का उपयोग कर ट्यूटोरियल x86 के लिए बूटलोडर/ओएस के विकास में एक प्रथम प्रयास के रूप में अनुसरण कर रही हूं:86 एनएएसएम 'org' निर्देश
http://joelgompert.com/OS/TableOfContents.htm
और मैं पाठ 4 पर हूँ, जो कर रहा है मेरी बूटलोडर "हैलो, वर्ल्ड" स्ट्रिंग प्रिंट करें। मैं org
निर्देश (निर्देश?) के अर्थ को समझ नहीं रहा हूं।
जैसा कि मैं इसे समझता हूं, org
परिभाषित करता है कि प्रोग्राम कहां निष्पादित किया जा रहा है स्मृति में लोड किया गया है। प्रोग्राम में किसी भी प्रकार के लेबल या रिश्तेदार पते का उपयोग करते समय इसकी आवश्यकता होती है।
मान लीजिए मैं एक स्ट्रिंग मेरे कार्यक्रम में इस तरह की एक लेबल के साथ परिभाषित किया गया है:
szHello db 'Hello, world!', 0
और मैं फिर बाद में संदर्भ है कि इस तरह लेबल करने के लिए प्रयास करें (केवल प्रासंगिक के टुकड़े):
org 0x7c00
xor ax, ax
mov ds, 0
...
mov si, szHello
lodsb
...
int 0x10 ; Print first character of szHello
मेरा सवाल है, यह इसके बराबर क्यों नहीं है? :
org 0
mov ds, 0x7c00
...
mov si, szHello
lodsb
...
int 0x10
जब मैं पहला उदाहरण चलाता हूं, तो मेरी स्ट्रिंग सही ढंग से दिखाई देती है। दूसरा उदाहरण काम नहीं करता है।
प्रासंगिक दस्तावेज के पॉइंटर्स की भी सराहना की जाएगी, अगर यह मुद्दा मेरे हिस्से पर एक वैचारिक समस्या है।
उत्कृष्ट, यह काम करता है, धन्यवाद। हालांकि, मुझे यकीन नहीं है कि मैं पूरी तरह से समझता हूं। क्या 'org' सेगमेंट एड्रेस या सेगमेंट में ऑफसेट का उपभोग करता है? –
यह वर्तमान सेगमेंट में ऑफसेट है। –
'mov ds, 0x7c0' मान्य निर्देश नहीं है। हो सकता है कि आपका मतलब 'mov ax, 0x7c0'' mov ds, ax' –