असेंबली लैंग्वेज क्या है?

कभी-कभी असेंबली या ASM के रूप में संदर्भित, एक असेंबली भाषा एक निम्न-स्तरीय प्रोग्रामिंग भाषा है।

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

मशीन की भाषा सिर्फ संख्याओं की एक श्रृंखला है, जिसे पढ़ना मनुष्य के लिए आसान नहीं है। एएसएम का उपयोग करके, प्रोग्रामर मानव-पढ़ने योग्य प्रोग्राम लिख सकते हैं जो लगभग मशीन भाषा के अनुरूप हैं।

नुकसान यह है कि कंप्यूटर जो कुछ भी करता है उसे स्पष्ट रूप से सटीक विवरण में वर्णित किया जाना चाहिए। फायदा यह है कि प्रोग्रामर का कंप्यूटर पर अधिकतम नियंत्रण होता है।

एएसएम एक "निम्न-स्तरीय" भाषा क्यों है?

असेंबली को एक निम्न-स्तरीय प्रोग्रामिंग भाषा कहा जाता है क्योंकि कंप्यूटर को क्या करना है, और कंप्यूटर क्या करता है, इसके बीच एक-से-एक संबंध है। सामान्य तौर पर, असेंबली प्रोग्राम की एक लाइन में कंप्यूटर के लिए अधिकतम एक निर्देश होता है।

ASM "उच्च-स्तरीय" भाषा से कैसे भिन्न है?

उच्च-स्तरीय भाषाएं निम्न-स्तरीय संचालन का सार प्रदान करती हैं जो प्रोग्रामर को यह वर्णन करने पर अधिक ध्यान केंद्रित करने की अनुमति देती हैं कि वे क्या करना चाहते हैं, और यह कैसे किया जाना चाहिए । इस तरह से प्रोग्रामिंग करना अधिक सुविधाजनक है और निम्न-स्तरीय नियंत्रण के बलिदान पर पढ़ने के लिए कार्यक्रमों को आसान बनाता है।

उच्च-स्तरीय भाषाओं में लिखे गए कार्यक्रम विधानसभा में लिखे गए कार्यक्रमों की कच्ची गति और दक्षता से कभी मेल नहीं खाएंगे। उच्च-स्तरीय भाषाओं के उदाहरणों में पायथन, जावा, जावास्क्रिप्ट, क्लोजर और लिस्प शामिल हैं।

"मध्य-स्तरीय" भाषा क्या है?

मध्य-स्तर या निम्न-स्तरीय भाषाएँ प्रोग्रामर के जीवन को आसान बनाने के लिए कुछ उच्च-स्तरीय सार प्रदान करती हैं, जबकि अभी भी निम्न-स्तरीय कार्यों तक पहुँच प्रदान करती हैं। उन्हें अक्सर ऑपरेटिंग सिस्टम लिखने के लिए उपयोग किया जाता है, इसलिए उन्हें कभी-कभी सिस्टम प्रोग्रामिंग भाषा कहा जाता है

मध्य-स्तरीय भाषाओं में लिखे गए कार्यक्रम असेंबली या असेंबली भाषा में लिखे गए कार्यक्रमों के अनुसार भी प्रदर्शन कर सकते हैं। मध्य-स्तरीय प्रोग्रामिंग भाषाओं के उदाहरणों में C, C ++, Ada, Nim और Rust शामिल हैं।

क्या ASM पोर्टेबल है?

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

पोर्टेबिलिटी उच्च-स्तरीय भाषाओं के मुख्य लाभों में से एक है। C प्रोग्रामिंग भाषा को अक्सर "पोर्टेबल असेंबली" कहा जाता है क्योंकि C कंपाइलर लगभग हर आधुनिक सिस्टम आर्किटेक्चर के लिए मौजूद हैं। C में लिखे गए प्रोग्राम को किसी अन्य कंप्यूटर पर संकलित करने से पहले कुछ बदलावों की आवश्यकता हो सकती है, लेकिन मूल भाषा पोर्टेबल है।

सामान्यतया, उच्च-स्तरीय भाषा है, इसके लिए अन्य वास्तुकला पर चलने के लिए कम बदलाव किए जाने की आवश्यकता है। सबसे निचले स्तर की भाषाएं - मशीन भाषा और विधानसभा भाषा - पोर्टेबल नहीं हैं।

उदाहरण: नमस्ते, विश्व! 32-बिट असेंबली में, विंडोज के लिए

यहां 32-बिट इंटेल प्रोसेसर के लिए "हैलो, वर्ल्ड" लिखा गया है। यह 64-बिट प्रोसेसर पर भी चलेगा। हम इसे विंडोज 10 पर संकलित और चलाएंगे।

 Global _main extern _printf section .text _main: पुश मैसेज कॉल _printf एस्प, 4 रिटायर संदेश: db 'हैलो, वर्ल्ड!', 10, 0 

शुरू करने के लिए, नोटपैड खोलें। ऊपर दिए गए कोड को एक नई टेक्स्ट फ़ाइल में कॉपी और पेस्ट करें, और फाइल को hello.asm के रूप में सहेजें

असेंबली को संकलित करने के लिए, हम एनएएसएम, नेटवाइड असेंबलर का उपयोग करेंगे। इसे //www.nasm.us/ पर डाउनलोड किया जा सकता है।

 nasm -f win32 नमस्ते 

जब आप यह आदेश चलाते हैं, तो NASM एक ऑब्जेक्ट फ़ाइल बनाता है। ऑब्जेक्ट फ़ाइल में मशीन कोड होता है, लेकिन यह एक निष्पादन योग्य फ़ाइल नहीं है। हमारी ऑब्जेक्ट फ़ाइल को hello.obj कहा जाता है।

निष्पादन योग्य बनाने के लिए, हम MinGW (विंडोज के लिए न्यूनतम GNU) के 32-बिट संस्करण का उपयोग करेंगे जो gcc संकलक प्रदान करेगा। इसे //www.mingw.org/ पर डाउनलोड किया जा सकता है।

 gcc -o hello.exe hello.obj 
 नमस्ते 
 नमस्ते दुनिया! 

उदाहरण: नमस्ते, विश्व! लिनक्स के लिए, 64-बिट असेंबली में

यहाँ "हैलो, वर्ल्ड" 64-बिट इंटेल प्रोसेसर के लिए लिखा गया है। हम इसे 64-बिट लिनक्स पर संकलित और चलाएंगे।

 बाहरी प्रिंट; सी प्रिंटफ फ़ंक्शन, जिसे अनुभाग कहा जाता है। डेटा; डेटा अनुभाग, आरंभिक चर संदेश: db "हैलो, दुनिया!", 0; सी स्ट्रिंग 0 एफएमटी के साथ समाप्त होती है: डीबी "% एस", 10, 0; प्रिंटफ़ प्रारूप, "\ n", '0' अनुभाग। प्रारंभ कोड अनुभाग वैश्विक मुख्य; मानक जीसीसी प्रविष्टि बिंदु मुख्य:; प्रवेश बिंदु पुश आरबीपी के लिए प्रोग्राम लेबल; स्टैक फ्रेम को सेट करना चाहिए, मूडी आरडीआई, एफएमटी मू आरसीआई, एमएसई मोक्स रेक्स, 0 को संरेखित किया जाना चाहिए; यह भी हो सकता है: xor rax, rax call printf; कॉल सी प्रिंटफ फ़ंक्शन पॉप आरबीपी; स्टैक मूव रक्स को पुनर्स्थापित करना, 0; सामान्य, कोई त्रुटि नहीं, वापसी मूल्य रिट; वापसी 

इस प्रोग्राम को hello.asm नामक एक नई फ़ाइल में कॉपी और पेस्ट करें।

फिर, NASM के साथ असेंबली संकलित करें, जिसे आप अपने पैकेज मैनेजर के साथ इंस्टॉल कर सकते हैं। उदाहरण के लिए, उबंटू या डेबियन पर, आप उपयुक्त का उपयोग करके NASM स्थापित कर सकते हैं:

 sudo apt update && sudo apt install nasm 

अपनी ऑब्जेक्ट फ़ाइल बनाने के लिए यह कमांड चलाएँ:

 nasm -f elf64 hello.asm 

ऑब्जेक्ट फ़ाइल का नाम hello.o है

इसके बाद, इस ऑब्जेक्ट फ़ाइल को अपने कंप्यूटर पर आवश्यक पुस्तकालयों से लिंक करने के लिए gcc का उपयोग करें, और इसे एक निष्पादन योग्य फ़ाइल में संकलित करें, जिसे हेलो कहा जाता है:

 gcc hello.o -o हेलो 

अंत में, निष्पादन योग्य फ़ाइल चलाएँ:

 ।/नमस्ते 
 नमस्ते दुनिया! 

संदर्भ के लिए, यह वही कार्यक्रम है, जो C में लिखा गया है:

 #include int main () {char msg [] = "नमस्ते दुनिया \ n"; printf ( "% s \ n", संदेश); वापसी 0; } 

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

2GL, असेंबलर, निम्न-स्तरीय भाषा, मशीन भाषा, प्रोग्रामिंग शब्द