असेम्बली भाषा
असेम्बली भाषा (assembly language) या असेम्बलर भाषा (assembler) कम्प्यूटर तथा अन्य प्रोग्राम करने योग्य युक्तियों (जैसे माइक्रोकन्ट्रोलर) की निम्न-स्तरीय प्रोग्रामन भाषा है[1]। असेम्बली के बाद भाषा तथा मशीन आर्किटेक्चर में प्रायः बहुत घनिष्ठ सम्बन्ध होता है। एक विशेष कम्प्यूटर आर्किटेक्चर के लिये असेम्बली भाषा भी विशिष्ट होती है। असेम्बली भाषा को 'सांकेतिक मशीन कोड' भी कह सकते हैं।
मशीनी भाषा द्वारा प्रोग्राम तैयार करने में आने वाली कठिनाईयो को दूर करने हेतु कम्प्यूटर वैज्ञानिको ने एक अन्य कम्प्यूटर प्रोग्राम भाषा का निर्माण किया। इस कम्प्यूटर प्रोग्रामिंग भाषा को असेम्बली भाषा कहते हैं। कम्प्यूटर प्रोग्रामिंग भाषा के विकास का पहला कदम यह था कि मशीनी भाषा को अंकीय क्रियांवयन संकेतो के स्थान पर अक्षर चिह्न स्मरणोपकारी का प्रयोग किया गया। स्मरणोपकारी का अर्थ यह है कि -एसी युक्ति जो हमारी स्मृति में वर्ध्दन करें। जैसे घटाने के लिये मशीनी भाषा में द्विअंकीय प्रणाली में 1111 और दशमलव प्रणाली में 15 का प्रयोग किया जाता है, अब यदि इसके लिये मात्र sub का प्रयोग किया जाए तो यह प्रोग्रामर की समय में सरलता लाएगी।
पारिभाषिक शब्दो में, वह कम्प्यूटर प्रोग्रामिंग भाषा जिसमें मशीनी भाषा में प्रयुक्त अंकीय संकेतो के स्थान पर अक्षर अथवा चिन्हो का प्रयोग किया जाता है, असेम्बली भाषा अथवा symbol language कहलाती है।
असेम्बली भाषा में मशीन कोड के स्थान पर ’नेमोनिक कोड’ का प्रयोग किया गया जिन्हे मानव मस्तिष्क आसानी से पहचान सकता था जैसे-LDA(load),Tran(Translation),JMP(Jump) एवं इसी प्रकार के अन्य नेमोनिक कोड जिन्हे आसानी से पहचाना व याद रखा जा सकता था। इनमे से प्रत्येक के लिये एक मशीन कोड भी निर्धारित किया गया, पर असेम्बली कोड से मशीन कोड में परिवर्तन का काम, कम्प्यूटर में ही स्थित एक प्रोग्राम के जरिये किया जाने लगा, इस प्रकार के प्रोग्राम को असेम्बलर नाम दिया गया। यह एक अनुवादक की भांति कार्य करता है।
असेम्बली भाषा की विशेषताएं
(१) नेमोनिक कोड और आकडो हेतु उपयुक्त नाम के प्रयोग के कारण इस प्रोग्रामिंग भाषा को अपेक्षाकृत अधिक सरलता से समझा जा सकता है।
(२) इस प्रोग्रामिंग भाषा में कम समय लगता है।
(३) इसमे गलतियो को सरलता से ढूंढकर दूर किया जा सकता है।
(४) इस प्रोग्रामिंग भाषा में मशीनी भाषा की अनेक विशेषताओ का समावेश है।
असेम्बली भाषा की परिसीमाए
(१) चूंकि इस प्रोग्रामिंग भाषा में प्रत्येक निर्देश चिन्हो एवं संकेतो में दिया जाता है और इसका अनुवाद सीधे मशीनी भाषा में होता है अत: यह भाषा भी हार्डवेयर पर निर्भर करती है। भिन्न ALU एवं Controling Unit के लिये भिन्न प्रोग्राम लिखना पड़ता है।
(२) प्रोग्राम लिखने के लिये प्रोग्रामर को हार्डवेयर की सम्पूर्ण जानकारी होनी आवश्यक है।
असेम्बली भाषा में प्रोग्राम का उदाहरण
- पहला उदाहरण -
# define N 16 .global _start .comm BUFF , N _start: mov $3 , %eax mov $0 , %ebx mov $BUFF , %ecx mov $N , %edx int $0x80 mov %eax , %edx mov $4 , %eax mov $1 , %ebx mov $BUFF , %ecx int $0x80 mov $1 , %eax mov $0 , %ebx int $0x80
- दूसरा उदाहरण -
पता (Address) | नाम (Label) | अनुदेश (Instruction (AT&T syntax)) | आब्जेक्ट/वस्तु कूट (Object code)[2] |
---|---|---|---|
.begin | |||
.org 2048 | |||
a_start | .equ 3000 | ||
2048 | ld length,% | ||
2064 | be done | 00000010 10000000 00000000 00000110 | |
2068 | addcc %r1,-4,%r1 | 10000010 10000000 01111111 11111100 | |
2072 | addcc %r1,%r2,%r4 | 10001000 10000000 01000000 00000010 | |
2076 | ld %r4,%r5 | 11001010 00000001 00000000 00000000 | |
2080 | ba loop | 00010000 10111111 11111111 11111011 | |
2084 | addcc %r3,%r5,%r3 | 10000110 10000000 11000000 00000101 | |
2088 | done: | jmpl %r15+4,%r0 | 10000001 11000011 11100000 00000100 |
2092 | length: | 20 | 00000000 00000000 00000000 00010100 |
2096 | address: | a_start | 00000000 00000000 00001011 10111000 |
.org a_start | |||
3000 | a: |