असेम्बली भाषा
असेम्बली भाषा (assembly language) या असेम्बलर भाषा (assembler) कम्प्यूटर तथा अन्य प्रोग्राम करने योग्य युक्तियों (जैसे माइक्रोकन्ट्रोलर) की निम्न-स्तरीय प्रोग्रामन भाषा है[१]। असेम्बली के बाद भाषा तथा मशीन आर्किटेक्चर में प्रायः बहुत घनिष्ट सम्बन्ध होता है। एक विशेष कम्प्यूटर आर्किटेक्चर के लिये असेम्बली भाषा भी विशिष्ट होती है। असेम्बली भाषा को 'सांकेतिक मशीन कोड' भी कह सकते हैं।
मशीनी भाषा द्वारा प्रोग्राम तैयार करने मे आने वाली कठिनाईयो को दूर करने हेतु कम्प्यूटर वैज्ञानिको ने एक अन्य कम्प्यूटर प्रोग्राम भाषा का निर्माण किया। इस कम्प्यूटर प्रोग्रामिंग भाषा को असेम्बली भाषा कहते है। कम्प्यूटर प्रोग्रामिंग भाषा के विकास का पहला कदम यह था कि मशीनी भाषा को अंकीय क्रियांवयन संकेतो के स्थान पर अक्षर चिन्ह स्मरणोपकारी का प्रयोग किया गया। स्मरणोपकारी का अर्थ यह है कि -एसी युक्ति जो हमारी स्मृति मे वर्ध्दन करें। जैसे घटाने के लिये मशीनी भाषा मे द्विअंकीय प्रणाली मे 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)[२] |
---|---|---|---|
.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: |
सन्दर्भ
- ↑ Assembler language स्क्रिप्ट त्रुटि: "webarchive" ऐसा कोई मॉड्यूल नहीं है।, IBM Knowledge center
- ↑ साँचा:cite book