NASM ke saath Assembly Program ko compile karen

सवाल पूछें
Linux या Windows पर <bold>NASM के साथ प्रोग्राम असेम्बल किया जा सकता है। क्योंकि इन दोनों प्लेटफार्म पर NASM उपलब्ध है. Netwide Assembler (NASM) Intel x86 आर्किटेक्चर के लिए एसेंबलर और डिसेंबलर है. आमतौर पर इसका इस्तेमाल 16-bit, 32-bit (IA-32), और 64-bit (x86-64) प्रोग्राम तैयार करने के लिए होता है.

एसेंबल आपके लो-लेवल कोडिंग को नेमोनिक्स की मदद से, मशीन लैंग्वेज में बदल देता है. इससे प्रोसेसर इसे समझ सकता है। ये आर्टिक NASM के प्रोग्राम के बारे में नहीं है, बल्कि यहां हम NASM सोर्स कोड से लिनक्स और विंडोज के लिए हम एक्जेक्यूटेबल कमांड क्रिएट करना सीखेंगे.



लिनक्स के लिए NASM के साथ असेंबली प्रोग्राम को कम्पाइल करना

सोर्स फाइल बनाना

आप सोर्स फाइब तैयार करने के लिए Gedit, KWrite या, XEmacs जैसा कोई भी टेक्स्ट एडिटर इस्तेमाल कर सकते हैं. जब आप अपनी फाइल सेव करेंगे तो इसमें .asm एक्सटेंशन होगा.

सोर्स फाइल को असेंबल करना

ऐसा करने के लिए आपको अपने मशीन में NASM सॉफ्टवेयर डाउनलोड करने की जरूरत पड़ेगी..

यदि आप Debian या Ubuntu चला रहे हैं, तो बस ये कमांड टाइप करें:

sudo apt-get install nasm

यदि आपके पास दूसरा लिनक्स डिस्ट्रीब्यूशन है, तो आप अपना डिस्ट्रीब्यूशन पैकेज मैनेजर (जैसे कि, Urpmi, Yum, Emerge) को इस्तेमाल करें, या ऑफिशियल साइट से NASM को डाउनलोड कर लें.

अपनी सोर्स फाइल को असेंबल करने के लिए यहां दिए गए कमांड का इस्तेमाल करें:

nasm -f elf test.asm

दिए गए उदाहरण में, सेव किया गया .asm file का नाम test.asm होगा. इससे मौजूदा डायरेक्टरी में test.o नाम का फाइल क्रिएट होगा.
नोट. ये फाइल एक्जेक्यूटेबल नहीं है. ये अभी भी ऑब्जेक्ट फाइल ही है.

एक्जेक्यूटेबल

अब जबकि हमारे पास test.o नाम का ऑब्जेक्ट फाइल है, तो हमें अपना एक्जेक्यूटेबल फाइल बनाना होगा.

आपका प्रोग्राम _start नाम की प्रक्रिया से शुरू हो सकता है. इसका मतलब ये कि आपके प्रोग्राम का अपना एंट्री प्वाइंट होगा, ये main फंक्शन का इस्तेमाल नहीं करेगा. हालांकि, आपको अपना एक्जेक्यूटेबल क्रिएट करने के लिए "l" को इस्तेमाल करने की जरूरत होगा:

ld test.o -o test

आपका प्रोग्राम main नाम की प्रक्रिया से शुरू हो सकता है. आपको अपना एक्जेक्यूटिबल क्रिएट करने के लिए gcc को इस्तेमाल करने की जरूरत पड़ेगी:

gcc test.o -o test

अब आपका एक्जेक्यूटिबल तैयार है, इसकी जांच भी हो चुकी है और ये मौजूदा डायरेक्टरी में अब मौजूद है.

प्रोग्राम एक्जेक्यूशन

यदि आपको test नाम के प्रोग्राम को रन करना हो तो बस ये कमांड टाइप करने की जरूरत है:

. / test 

विंडोज के लिए NASM के साथ असेंबली प्रोग्राम को कम्पाइल करें

विंडो में main फंक्शन उपलब्द नहीं है. इसकी जगह WinMain का इस्तेमाल करना होगा.

यदि आपका एंट्री प्वाइंट _start या main है, तो इसे _WinMain @ 16 में बदल दें. साथ ही, प्रक्रिया के आखिर में ret को बदल कर ret 16 कर दें:

section .text       
global _WinMain@16

_WinMain@16:
mov eax, 0
ret 16

सॉफ्टवेयर इंस्टॉल करें

आपको सबसे पहले http://ccm.net/download/download 1025 NASM को इंस्टॉल करना होगा. आर्चिव को कहीं रखें, इसका बाद में इस्तेमाल होगा.

सबसे मुश्किल होगा MinGW को इंस्टॉल करना. ये विंडोज के लिए फ्री डेवलपमेंट एनवायरमेंट है:

सबसे पहले A-Z से MingGW का लेटेस्ट वर्जन इंस्टॉल कर लीजिए. इंस्टॉलर को रन कीजिए. लेकिन अभी इसे अपडेट मत कीजिएगा. डिफॉल्ट तरीके से सलेक्ट किए गए सभी ऑप्शन को छोड़ते हुए आगे बढ़िए. इसके इंस्टॉल होने का इंतजार कीजिए.

अब आपको डेवेलपमेंट एनवायरमेंट MinGW में NASM को इन्सर्ट करने की जरूरत है. आपको फोल्डर में दूसरी चीजों के अतिरिक्त, nasm.exe नाम की फाइल मिलेगी. इस फाइल को C: \ MinGW \ bin डायरेक्टरी में कॉपी कीजिए.

सोर्स फाइल क्रिएट करें

लिनक्स की तरह, NASM के लिए सोर्स फाइल क्रिएट करना है तो उसके लिए खास पब्लिशर की जरूरत नहीं होगी. आप Notepad का इस्तेमाल कर सकते हैं. लेकिन ध्यान रहे कि ये जो फाइल क्रिएट करता है उसमें .txt एक्सटेंशन जुड़ा होता है. किसी तरह का भ्रम न हो, इसके लिए आपको सलाह दी जाता ही कि आप अपनी फाइलों का एक्सटेंशन देखें.

किसी भी हाल हमें, Word या WordPad जैसे वर्ड प्रोसेसर से बचें.

यदि आप चाहें, तो आप उस एडिटर का इस्तेमाल कर सकते हैं जो NasmEdit IDE जैसा NASM सिंटेक्स का उपयोग करता हो.

अपने सोर्स फाइल को .asm एक्सटेंशन के साथ जरूर सेव कर लें.

सोर्स फाइल को असेंबल करें

सबसे पहले Start > Run पर जाएं और Command विंडो को ओपन करें. फिर वहां cmd.exe टाइप करें.

अब cd का उपयोग करते हुए उस फोल्डर में जाएं, जहां सोर्स फाइल है. एक बार जब आप इस डायरेक्टरी में आ जाएं, अपने सोर्स फाइल को (test.asm) असेंबल करें. इसके लिए यहां दिए गए कमांड की मदद लें:

nasm -f win32 test.asm -o test.o

अब आपकी ऑब्जेक्ट फाइल बन कर तैयार है. अब अगला कदम होगा, इस फाइल को एक एक्जेक्यूटेबल फाइल में बदलना.

प्रोग्राम को क्रिएट करना और फिर उसे एक्जेक्यूट करना

एक्जेक्यूटिबल क्रिएट करने के लिए अपने Command विंडो में फाइनल कमांड टाइप करें:

ld test.o -o test.exe       

Image: © Alexandr Pakhnyushchyy - Shutterstock.com

ओरिजिनल आर्टिकल deri58 ने पब्लिश किया. Swarnkanta ने अनुवाद किया. ताजा अपडेट: 25 सितम्बर, 2018 - 05:31 अपराह्न पर Swarnkanta ने किया.

CCM (https://in.ccm.net/) पर उपलब्ध यह डॉक्युमेंट "NASM के साथ Assembly Program को कंपाइल करें " क्रिएटिव कॉमन लाइसेंस के तहत उपलब्ध कराया गया है. जैसा कि इस नोट में साफ जाहिर है, आप इस पन्ने को लाइसेंस के तहत दी गई शर्तों के मुताबिक संशोधित और कॉपी कर सकते हैं.