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

अंकगणितीय और तार्किक संक्रियाएँ

रजिस्टर और मेमोरी में मौजूद डेटा पर बुनियादी अंकगणित (ADD, SUB, MUL, DIV) और तार्किक संक्रियाएँ (AND, OR, XOR, NOT) करना सीखें।

पाठ 2, कुल 4 में से12 चरण

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

असेंबली क्रियाओं का परिचय

x86 असेंबली की मुख्य क्रियाओं की दुनिया में आपका स्वागत है! आज हम सीखेंगे कि CPU मूलभूत गणित और तर्क कैसे करता है।

ये निर्देश मौलिक हैं। इनके माध्यम से आपके प्रोग्राम मानों की गणना कर सकते हैं, निर्णय ले सकते हैं और सबसे निचले स्तर पर डेटा में बदलाव कर सकते हैं।

जोड़: ADD निर्देश

दो संख्याओं को जोड़ने के लिए ADD निर्देश का उपयोग किया जाता है। इसमें दो ऑपरेंड होते हैं: गंतव्य और स्रोत।

  • वाक्य-विन्यास: ADD destination, source
  • source मान को destination मान में जोड़ा जाता है।
  • परिणाम वापस destination ऑपरेंड में संग्रहीत किया जाता है।
  • ऑपरेंड रजिस्टर, मेमोरी स्थान या तत्काल मान (स्थिरांक) हो सकते हैं।

उदाहरण के लिए, ADD EAX, EBX में EBX के मान को EAX में जोड़ा जाता है और योग EAX में संग्रहीत होता है।

ADD का प्रयोग

आइए एक सरल प्रोग्राम में ADD को देखें। हम 5 में 3 जोड़ेंगे और परिणाम को EAX रजिस्टर में संग्रहीत करेंगे।

इस उदाहरण को चलाकर देखें:

section .text
  global _start

_start:
  mov eax, 5   ; Load 5 into EAX
  add eax, 3   ; Add 3 to EAX (EAX becomes 8)

  ; Exit the program (Linux 32-bit syscall)
  mov eax, 1   ; sys_exit syscall number
  xor ebx, ebx ; Exit code 0
  int 0x80     ; Call kernel

घटाव: SUB निर्देश

SUB निर्देश, ADD के विपरीत कार्य करता है। यह स्रोत ऑपरेंड को गंतव्य ऑपरेंड से घटाता है।

  • वाक्य-विन्यास: SUB destination, source
  • source मान को destination मान से घटाया जाता है।
  • परिणाम वापस destination ऑपरेंड में संग्रहीत किया जाता है।

ADD की तरह, SUB भी रजिस्टर, मेमोरी या तत्काल मानों को ऑपरेंड के रूप में ले सकता है। यह मूलभूत अंकगणित और तुलना के लिए आवश्यक है।

SUB का प्रयोग

यहाँ SUB को कार्य करते हुए देखते हैं। हम 10 को EAX में लोड करेंगे और फिर उसमें से 4 घटाएँगे।

घटाव देखने के लिए यह कोड चलाएँ:

section .text
  global _start

_start:
  mov eax, 10  ; Load 10 into EAX
  sub eax, 4   ; Subtract 4 from EAX (EAX becomes 6)

  ; Exit the program (Linux 32-bit syscall)
  mov eax, 1   ; sys_exit syscall number
  xor ebx, ebx ; Exit code 0
  int 0x80     ; Call kernel

गुणा: MUL और IMUL

x86 असेंबली में बिना चिह्न वाली संख्याओं के लिए MUL और चिह्न वाली संख्याओं के लिए IMUL का उपयोग किया जाता है।

  • MUL और IMUL अक्सर AX, EAX या RAX रजिस्टर को एक ऑपरेंड के रूप में अंतर्निहित रूप से उपयोग करते हैं।
  • 32-बिट गुणा में, यदि आप EAX के किसी मान को दूसरे रजिस्टर (जैसे EBX) से गुणा करते हैं, तो 64-बिट परिणाम दो रजिस्टरों में संग्रहीत होता है: निचले 32 बिट EAX में और ऊपरी 32 बिट EDX में।

अपने ऑपरेंड के आकार और परिणाम के संभावित आकार को हमेशा ध्यान में रखें!

गुणा का उदाहरण

आइए MUL का उपयोग करके 5 को 6 से गुणा करें। परिणाम 30 होगा।

क्रियान्वयन के बाद, परिणाम का निचला भाग EAX में और ऊपरी भाग EDX में होगा (इस स्थिति में वह 0 होगा)।

section .text
  global _start

_start:
  mov eax, 5   ; Load 5 into EAX
  mov ebx, 6   ; Load 6 into EBX
  mul ebx      ; Multiply EAX by EBX. Result in EDX:EAX
               ; EAX will be 30, EDX will be 0

  ; Exit the program (Linux 32-bit syscall)
  mov eax, 1   ; sys_exit syscall number
  xor ebx, ebx ; Exit code 0
  int 0x80     ; Call kernel

भाग: DIV और IDIV

भाग देने का कार्य DIV (बिना चिह्न वाला) और IDIV (चिह्न वाला) करते हैं। ये निर्देश कुछ अधिक जटिल हैं।

  • 32-बिट भाग के लिए, भाज्य (जिसे विभाजित किया जाना है) EDX:EAX में होना चाहिए (EDX में ऊपरी 32 बिट और EAX में निचले 32 बिट होते हैं)।
  • भाजक को एक ऑपरेंड के रूप में निर्दिष्ट किया जाता है (जैसे कोई रजिस्टर या मेमोरी स्थान)।
  • भाग के बाद, भागफल (परिणाम) EAX में और शेषफल EDX में संग्रहीत होता है।

यदि आपका भाज्य EAX में समा जाता है, तो बिना चिह्न वाले भाग से पहले हमेशा सुनिश्चित करें कि EDX सही रूप से सेट है (अक्सर 0 पर साफ़ किया जाता है)।

भाग का उदाहरण

आइए 10 को 3 से विभाजित करें। हमें 3 का भागफल और 1 का शेषफल मिलने की अपेक्षा है।

ध्यान दें कि भाग से पहले EDX को साफ़ किया गया है, क्योंकि हमारा भाज्य (10) पूरी तरह EAX में समा जाता है।

section .text
  global _start

_start:
  mov eax, 10  ; Load 10 into EAX (low part of dividend)
  mov edx, 0   ; Clear EDX (high part of dividend for 32-bit)
  mov ebx, 3   ; Load 3 into EBX (divisor)
  div ebx      ; Divide EDX:EAX by EBX.
               ; Quotient in EAX (3), Remainder in EDX (1)

  ; Exit the program (Linux 32-bit syscall)
  mov eax, 1   ; sys_exit syscall number
  xor ebx, ebx ; Exit code 0
  int 0x80     ; Call kernel

बिट-स्तरीय तर्क: AND, OR, XOR, NOT

अंकगणित के अलावा, असेंबली बिट-स्तरीय क्रियाओं में भी उत्कृष्ट है। ये निर्देश किसी संख्या के अलग-अलग बिट में बदलाव करते हैं।

  • AND: तब बिट को सेट करता है जब संबंधित दोनों बिट 1 हों। बिट मास्किंग के लिए उपयोगी।
  • OR: तब बिट को सेट करता है जब संबंधित कम-से-कम एक बिट 1 हो। विशिष्ट बिट सेट करने के लिए उपयोगी।
  • XOR: तब बिट को सेट करता है जब संबंधित बिट अलग हों। बिट टॉगल करने या किसी रजिस्टर को तुरंत साफ़ करने के लिए उपयोगी (जैसे XOR EAX, EAX)।
  • NOT: सभी बिट को उलट देता है (0 को 1 और 1 को 0 कर देता है)। यह एक एकल-ऑपरेंड क्रिया है।

निम्न-स्तरीय नियंत्रण, फ्लैग और डेटा में बदलाव के लिए ये अत्यंत महत्वपूर्ण हैं।

त्वरित जाँच: बिट-स्तरीय क्रियाएँ

निम्नलिखित असेंबली अंश पर विचार करें:

mov al, 0b11001010
and al, 0b00001111

इन निर्देशों के चलने के बाद AL रजिस्टर में संग्रहीत अंतिम मान क्या होगा?

पुनरावृत्ति: मूलभूत क्रियाएँ

बहुत अच्छा! आपने x86 असेंबली में आवश्यक अंकगणितीय और बिट-स्तरीय तार्किक क्रियाएँ सीख ली हैं।

  • अंकगणित: ADD, SUB, MUL/IMUL, DIV/IDIV गणनाएँ करते हैं।
  • तर्क: AND, OR, XOR, NOT मास्किंग, सेट करना, टॉगल करना और उलटना जैसे कार्यों के लिए अलग-अलग बिट में बदलाव करते हैं।

ये निर्देश जटिल प्रोग्रामों के आधारभूत घटक हैं। इनके माध्यम से आपका CPU डेटा को प्रभावी ढंग से संसाधित कर सकता है और निर्णय ले सकता है। अभ्यास करते रहें!

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

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

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

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

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

क्या “अंकगणितीय और तार्किक संक्रियाएँ” पाठ निःशुल्क है?

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

“अंकगणितीय और तार्किक संक्रियाएँ” में मैं क्या सीखूँगा?

रजिस्टर और मेमोरी में मौजूद डेटा पर बुनियादी अंकगणित (ADD, SUB, MUL, DIV) और तार्किक संक्रियाएँ (AND, OR, XOR, NOT) करना सीखें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

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

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

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

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

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

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

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

  1. डेटा स्थानांतरण निर्देश (MOV, PUSH, POP)
  2. अंकगणितीय और तार्किक संक्रियाएँ
  3. सशर्त जंप और लूप
  4. बिटवाइज़ और शिफ्ट निर्देश
← Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग पर वापस जाएँ