Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग · पाठ

डेटा निरूपण और प्रकार

असेंबली निर्देशों का उपयोग करके पूर्णांक, अक्षर और अन्य डेटा प्रकारों को मेमोरी में संग्रहीत और परिवर्तित करना सीखें।

पाठ 3, कुल 4 में से11 चरण

डेटा निरूपण और प्रकार, CoddyKit पर Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

डेटा प्रकार क्या होते हैं

असेंबली भाषा में हम सीधे कच्चे बिट और बाइट के साथ काम करते हैं। लेकिन हमें कैसे पता चले कि बाइट का कोई अनुक्रम किसी संख्या, अक्षर या किसी अन्य चीज़ को दर्शाता है?

यहीं डेटा प्रकार काम आते हैं! वे कच्चे डेटा को अर्थ देते हैं, जिससे आपको और CPU को यह समझने में मदद मिलती है कि जानकारी की व्याख्या और उसमें बदलाव कैसे करना है।

सामान्य डेटा आकार

x86 असेंबली डेटा के लिए मानक आकार निर्धारित करती है। ये सीधे इस बात से जुड़े होते हैं कि डेटा का कोई भाग कितनी मेमोरी जगह घेरता है:

  • BYTE: 8 बिट
  • WORD: 16 बिट (2 बाइट)
  • DWORD: डबल वर्ड, 32 बिट (4 बाइट)
  • QWORD: क्वाड वर्ड, 64 बिट (8 बाइट)

ये आकार वेरिएबल घोषित करने और रजिस्टर के साथ काम करने के लिए मूलभूत हैं।

डेटा परिभाषित करना: DB, DW, DD, DQ

मेमोरी में डेटा रखने के लिए हम डेटा डेफिनिशन डायरेक्टिव का उपयोग करते हैं। ये असेंबलर को जगह आरक्षित करने और आवश्यकता होने पर उसे किसी मान से आरंभ करने का निर्देश देते हैं।

  • DB: बाइट परिभाषित करें (8-बिट)
  • DW: वर्ड परिभाषित करें (16-बिट)
  • DD: डबलवर्ड परिभाषित करें (32-बिट)
  • DQ: क्वाडवर्ड परिभाषित करें (64-बिट)

अपने प्रोग्राम में वेरिएबल बनाते समय आपको ये अक्सर दिखाई देंगे।

अनसाइंड पूर्णांक

अनसाइंड पूर्णांक वह संख्या है जो हमेशा धनात्मक या शून्य होती है। इसके सभी बिट संख्या के परिमाण को दर्शाने के लिए उपयोग किए जाते हैं।

उदाहरण के लिए, 8-बिट अनसाइंड बाइट में 0 से 255 तक के मान रखे जा सकते हैं। 16-बिट अनसाइंड वर्ड में 0 से 65,535 तक के मान रखे जा सकते हैं।

जब आपको ऋणात्मक संख्याओं की आवश्यकता नहीं होती, तब अनसाइंड प्रकार उपयुक्त होते हैं और आपको अधिक बड़ी धनात्मक सीमा देते हैं।

साइंड पूर्णांक (टूज़ कॉम्प्लिमेंट)

साइंड पूर्णांक धनात्मक और ऋणात्मक, दोनों मानों को दर्शा सकते हैं। एक बिट, सामान्यतः मोस्ट सिग्निफिकेंट बिट (MSB), चिह्न बताने के लिए उपयोग की जाती है (धनात्मक के लिए 0 और ऋणात्मक के लिए 1)।

ऋणात्मक संख्याओं को आमतौर पर टूज़ कॉम्प्लिमेंट का उपयोग करके दर्शाया जाता है। यह प्रणाली धनात्मक और ऋणात्मक, दोनों मानों पर अंकगणितीय क्रियाओं को सहज रूप से काम करने देती है।

8-बिट साइंड बाइट की सीमा -128 से +127 तक होती है।

अक्षर डेटा: ASCII

'A', 'b' या '7' जैसे अक्षर भी संख्याओं के रूप में संग्रहीत होते हैं! इसके लिए सबसे सामान्य मानक ASCII (अमेरिकन स्टैंडर्ड कोड फ़ॉर इन्फ़ॉर्मेशन इंटरचेंज) है।

हर अक्षर को एक विशिष्ट 8-बिट (1-बाइट) संख्यात्मक मान दिया जाता है। उदाहरण के लिए, 'A' अक्षर को दशमलव मान 65 (या हेक्साडेसिमल 0x41) से दर्शाया जाता है।

आप DB डायरेक्टिव का उपयोग करके एकल अक्षर या पूरी स्ट्रिंग परिभाषित कर सकते हैं।

कोड: डेटा परिभाषित करना और उस तक पहुँचना

यह उदाहरण दिखाता है कि अलग-अलग डेटा प्रकारों को कैसे परिभाषित किया जाता है और फिर उनके मान CPU रजिस्टर में लोड किए जाते हैं। इससे पता चलता है कि असेंबली इन नामित मेमोरी स्थानों के साथ कैसे व्यवहार करती है।

section .data
    ; Define various data types
    myByte  db 10        ; An 8-bit unsigned integer
    myWord  dw 256       ; A 16-bit unsigned integer
    myDword dd 65536     ; A 32-bit unsigned integer
    myChar  db 'X'       ; An 8-bit character (ASCII value 88)
    myString db "Hello", 0 ; A string (null-terminated)

section .text
    global _start

_start:
    ; Move byte into AL register
    mov al, [myByte]

    ; Move word into BX register
    mov bx, [myWord]

    ; Move dword into ECX register
    mov ecx, [myDword]

    ; Move char into DL register
    mov dl, [myChar]

    ; Exit gracefully (Linux syscall)
    mov eax, 1           ; sys_exit syscall number
    xor ebx, ebx         ; Exit code 0
    int 0x80             ; Invoke kernel

डेटा अलाइनमेंट के लाभ

डेटा अलाइनमेंट का अर्थ है डेटा को मेमोरी में ऐसे एड्रेस पर रखना, जो उसके आकार का गुणज हो। उदाहरण के लिए, DWORD (4 बाइट) को ऐसे एड्रेस पर अलाइन किया जा सकता है, जिसका अंतिम अंक 0, 4, 8 या C (हेक्स) हो।

हालाँकि सभी CPU के लिए यह अनिवार्य नहीं है, फिर भी सही अलाइनमेंट प्रदर्शन को काफ़ी बेहतर बना सकता है। CPU अलाइंड डेटा को अधिक कुशलता से प्राप्त कर सकता है, अक्सर एक ही मेमोरी एक्सेस में, जिससे अतिरिक्त काम बचता है।

सही अलाइनमेंट सुनिश्चित करने में सहायता के लिए असेंबलर कभी-कभी ALIGN जैसे डायरेक्टिव प्रदान करते हैं।

डेटा प्रकार क्यों महत्वपूर्ण हैं

डेटा प्रकारों को समझना महत्वपूर्ण है, क्योंकि वे यह निर्धारित करते हैं:

  • मेमोरी उपयोग: आपका डेटा कितनी जगह घेरता है।
  • निर्देश का चयन: डेटा के आकार के लिए कौन-से असेंबली निर्देश (जैसे ADD, MOV) उपयुक्त हैं।
  • व्याख्या: CPU 0xFF को 255 (अनसाइंड) मानेगा या -1 (साइंड)।

सावधानी से प्रकार चुनने पर त्रुटियाँ रुकती हैं और यह सुनिश्चित होता है कि आपके प्रोग्राम सबसे निचले स्तर पर अपेक्षा के अनुसार काम करें।

त्वरित जाँच: डेटा आकार

आपने सामान्य डेटा आकारों और उनकी परिभाषा के बारे में सीखा है। आइए अपने ज्ञान को परखें!

पुनरावलोकन: डेटा का निरूपण

बहुत अच्छा! आपने x86 असेंबली में डेटा निरूपण की मूलभूत अवधारणाओं का अध्ययन किया है।

  • हम अलग-अलग आकारों के डेटा को DB, DW, DD और DQ जैसे डायरेक्टिव से परिभाषित करते हैं।
  • पूर्णांक साइंड (धनात्मक/ऋणात्मक) या अनसाइंड (केवल धनात्मक) हो सकते हैं।
  • अक्षरों को ASCII मानक का उपयोग करके संग्रहीत किया जाता है, जिसमें हर अक्षर का एक संख्यात्मक मान होता है।
  • डेटा अलाइनमेंट को समझने से प्रदर्शन को बेहतर बनाने में सहायता मिल सकती है।

अब हम अधिक जटिल क्रियाएँ करने के लिए इस ज्ञान को आगे बढ़ाएँगे!

शुरुआत निःशुल्क

एआई शिक्षक के साथ Assembly सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “डेटा निरूपण और प्रकार” पाठ निःशुल्क है?

हाँ—“डेटा निरूपण और प्रकार” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“डेटा निरूपण और प्रकार” में मैं क्या सीखूँगा?

असेंबली निर्देशों का उपयोग करके पूर्णांक, अक्षर और अन्य डेटा प्रकारों को मेमोरी में संग्रहीत और परिवर्तित करना सीखें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“डेटा निरूपण और प्रकार” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. x86 रजिस्टरों को समझना
  2. मेमोरी एड्रेसिंग मोड
  3. डेटा निरूपण और प्रकार
  4. FLAGS रजिस्टर और स्थिति बिट्स
← Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग पर वापस जाएँ