बेसिक असेंबली लैंग्वेज: Difference between revisions
No edit summary |
|||
(7 intermediate revisions by 4 users not shown) | |||
Line 2: | Line 2: | ||
{{Infobox programming language | {{Infobox programming language | ||
| name = | | name = नेटिव असेंबली लैंग्वेज | ||
| logo = | | logo = | ||
| paradigm = [[ | | paradigm = [[असेंबली लैंग्वेज]] | ||
| year = 1964 | | year = 1964 | ||
| designer = | | designer = | ||
| developer = [[ | | developer = [[आईबीएम]] | ||
| latest_release_version = | | latest_release_version = | ||
| latest_release_date = | | latest_release_date = | ||
Line 14: | Line 14: | ||
| influenced_by = | | influenced_by = | ||
| influenced = | | influenced = | ||
| operating_system = [[ | | operating_system = [[आईबीएम बेसिक प्रोग्रामिंग सपोर्ट]], [[बीओएस/360|बेसिक ऑपरेटिंग सिस्टम/360]] | ||
| license = free | | license = free | ||
| website = | | website = | ||
Line 20: | Line 20: | ||
{{Infobox programming language | {{Infobox programming language | ||
| name = | | name = हाई लेवल असेम्बलर | ||
| logo = | | logo = | ||
| paradigm = [[ | | paradigm = [[असेंबली लैंग्वेज]] | ||
| year = 1992 | | year = 1992 | ||
| designer = | | designer = | ||
| developer = [[ | | developer = [[आईबीएम]] | ||
| latest_release_version = | | latest_release_version = संस्करण 1 रिलीज 6 | ||
| latest_release_date = | | latest_release_date = | ||
| implementations = | | implementations = हाई लेवल असेम्बलर | ||
| typing = | | typing = | ||
| influenced_by = | | influenced_by = | ||
| influenced = | | influenced = | ||
| operating_system = | | operating_system = आईबीएम [[एमवीएस/ईएसए]] और सक्सेसर, [[वीएम/ईएसए]] और सक्सेसर, [[वीएसई/ईएसए]] और सक्सेसर | ||
| license = | | license = स्वामित्व | ||
| website = https://www.ibm.com/products/high-level-assembler-and-toolkit-feature | | website = https://www.ibm.com/products/high-level-assembler-and-toolkit-feature | ||
}} | }} | ||
'''बेसिक असेंबली लैंग्वेज (BAL)''' एक अत्यंत प्रतिबंधित असेंबली लैंग्वेज है, जिसे 1964 में पेश किया गया था और इसका उपयोग IBM सिस्टम/360 मेनफ्रेम सिस्टम पर केवल 8 KB मुख्य मेमोरी के साथ किया जाता था, और इनपुट/आउटपुट के लिए केवल एक [[कार्ड रीडर]], एक [[कार्ड पंच]] और एक प्रिंटर आईबीएम बेसिक प्रोग्रामिंग सपोर्ट (BPS/360) के भाग के रूप में होता था। BAL के लिए बेसिक असेंबलर बेसिक ऑपरेटिंग सिस्टम/360 (BOS/360) के भाग के रूप में भी उपलब्ध था। | '''बेसिक असेंबली लैंग्वेज (BAL)''' एक अत्यंत प्रतिबंधित असेंबली लैंग्वेज है, जिसे 1964 में पेश किया गया था और इसका उपयोग IBM सिस्टम/360 मेनफ्रेम सिस्टम पर केवल 8 KB मुख्य मेमोरी के साथ किया जाता था, और इनपुट/आउटपुट के लिए केवल एक [[कार्ड रीडर]], एक [[कार्ड पंच]] और एक प्रिंटर आईबीएम बेसिक प्रोग्रामिंग सपोर्ट (BPS/360) के भाग के रूप में होता था। BAL के लिए बेसिक असेंबलर बेसिक ऑपरेटिंग सिस्टम/360 (BOS/360) के भाग के रूप में भी उपलब्ध था। | ||
कुछ लोगों ने अन्य असेंबलर | कुछ लोगों ने अन्य असेंबलर लैंग्वेज को संदर्भित करने के लिए BAL शब्द का उपयोग किया, ठीक उसी तरह जैसे उन्होंने सामान्य उत्पादों को संदर्भित करने के लिए कोडक और ''ज़ेरॉक्स'' जैसे ट्रेडमार्क शब्दों का उपयोग किया; यह प्रथा ख़त्म हो गई है. | ||
[[IBM Z]] के माध्यम से सिस्टम/360 के लिए अन्य ऑपरेटिंग सिस्टम पर असेंबलर, [[स्पेरी कॉर्पोरेशन]] द्वारा बनाए गए UNIVAC सीरीज 90 मेनफ्रेम के लिए, और वर्तमान में फुजित्सु द्वारा बनाए गए [[BS2000]] मेनफ्रेम के लिए, इसके सिंटैक्स को विरासत में मिला और बढ़ाया। नवीनतम व्युत्पन्न | [[IBM Z]] के माध्यम से सिस्टम/360 के लिए अन्य ऑपरेटिंग सिस्टम पर असेंबलर, [[स्पेरी कॉर्पोरेशन]] द्वारा बनाए गए UNIVAC सीरीज 90 मेनफ्रेम के लिए, और वर्तमान में फुजित्सु द्वारा बनाए गए [[BS2000]] मेनफ्रेम के लिए, इसके सिंटैक्स को विरासत में मिला और बढ़ाया। नवीनतम व्युत्पन्न लैंग्वेज को IBM हाई-लेवल असेंबलर (HLASM) के रूप में जाना जाता है। असेंबलरों के इस समहू का उपयोग करने वाले प्रोग्रामर उन्हें ALC, (असेंबली लैंग्वेज कोडिंग के लिए), या बस "असेंबलर" के रूप में भी संदर्भित करते हैं। | ||
==सामान्य विशेषताएँ== | ==सामान्य विशेषताएँ== | ||
चूँकि यह एक असेंबली | चूँकि यह एक असेंबली लैंग्वेज है, BAL IBM मेनफ्रेम आर्किटेक्चर के मूल निर्देश सेट का उपयोग करता है, जिसमें System/360, System/370, System/370-XA, ESA/370, ESA/390, और z/आर्किटेक्चर सम्मिलित हैं। | ||
मशीन निर्देशों की सरलता का अर्थ है कि असेंबलर में लिखे गए प्रोग्राम का स्रोत कोड | मशीन निर्देशों की सरलता का अर्थ है कि असेंबलर में लिखे गए प्रोग्राम का स्रोत कोड सामान्यतः [[COBOL]] या [[फोरट्रान]] के समकक्ष प्रोग्राम की तुलना में अधिक लंबा होगा। अतीत में, हाथ से कोडित असेंबलर कार्यक्रमों की गति को प्रायः इस कमी को पूरा करने के लिए महसूस किया जाता था, लेकिन ऑप्टिमाइज़िंग कंपाइलर, मेनफ्रेम के लिए C और अन्य अग्रिमों के आगमन के साथ, असेंबलर ने अपनी बहुत सारी अपील खो दी है। हालाँकि, आईबीएम असेंबलर को अपग्रेड करना जारी रखता है, और इसका उपयोग अभी भी तब किया जाता है जब गति या बहुत अच्छे नियंत्रण की आवश्यकता सर्वोपरि होती है। हालाँकि, BAL के सभी आईबीएम उत्तराधिकारियों में एक परिष्कृत मैक्रो सुविधा सम्मिलित है जो बहुत अधिक कॉम्पैक्ट स्रोत कोड लिखने की अनुमति देती है। | ||
असेंबलर का उपयोग करने का दूसरा कारण यह है कि सभी ऑपरेटिंग सिस्टम फ़ंक्शंस को उच्च-स्तरीय | असेंबलर का उपयोग करने का दूसरा कारण यह है कि सभी ऑपरेटिंग सिस्टम फ़ंक्शंस को उच्च-स्तरीय लैंग्वेज में एक्सेस नहीं किया जा सकता है। मेनफ्रेम ऑपरेटिंग सिस्टम के एप्लिकेशन प्रोग्राम इंटरफ़ेस को असेंबली लैंग्वेज "मैक्रो" निर्देशों के एक सेट के रूप में परिभाषित किया गया है, जो सामान्यतः सुपरवाइज़र कॉल (एसवीसी) को आमंत्रित करता है [उदाहरण के लिए, z/OS पर] या ऑपरेटिंग सिस्टम रूटीन को लागू करने के लिए डायग्नोज़ (DIAG) [उदाहरण के लिए, z/VM] निर्देश। असेंबलर सबरूटीन्स के उपयोग द्वारा उच्च-स्तरीय लैंग्वेज में लिखे गए प्रोग्रामों से ऑपरेटिंग सिस्टम सेवाओं का उपयोग करना संभव है। | ||
==असेंबलर स्टेटमेंट फॉर्मेट== | ==असेंबलर स्टेटमेंट फॉर्मेट== | ||
[[Image:IBM keypunch deck and program listing for Assembly language student program at New York University 1979.jpg|thumb|right|1970 के दशक में आईबीएम 370 असेंबली | [[Image:IBM keypunch deck and program listing for Assembly language student program at New York University 1979.jpg|thumb|right|1970 के दशक में आईबीएम 370 असेंबली लैंग्वेज के उपयोग के दौरान कीपंच कार्ड और एक मुद्रित असेंबली सूची आम थी]]असेंबलर लैंग्वेज स्टेटमेंट का प्रारूप 80-कॉलम वाले पंच कार्ड के लेआउट को दर्शाता है, हालांकि क्रमिक संस्करणों ने अधिकांश प्रतिबंधों में ढील दी है। | ||
वैकल्पिक स्टेटमेंट लेबल या नाम एक स्ट्रिंग अल्फ़ान्यूमेरिक वर्ण है जो कॉलम 1 से | वैकल्पिक स्टेटमेंट लेबल या नाम एक स्ट्रिंग अल्फ़ान्यूमेरिक वर्ण है जो कॉलम 1 से प्रारम्भ होता है। पहला वर्ण वर्णानुक्रमिक होना चाहिए। बाद के संस्करणों ने लेबल में उपयोग किए गए कानूनी वर्णों में @, #, $ और _ जोड़े, और आकार को प्रारंभिक छह से बढ़ाकर आठ वर्णों तक, फिर लगभग असीमित लंबाई तक बढ़ा दिया। | ||
* वैकल्पिक स्टेटमेंट लेबल या नाम एक स्ट्रिंग अल्फ़ान्यूमेरिक वर्ण है जो कॉलम 1 से | * वैकल्पिक स्टेटमेंट लेबल या नाम एक स्ट्रिंग अल्फ़ान्यूमेरिक वर्ण है जो कॉलम 1 से प्रारम्भ होता है। पहला वर्ण वर्णानुक्रमिक होना चाहिए। बाद के संस्करणों ने लेबल में उपयोग किए गए कानूनी वर्णों में @, #, $ और _ जोड़े, और आकार को प्रारंभिक छह से बढ़ाकर आठ वर्णों तक, फिर लगभग असीमित लंबाई तक बढ़ा दिया। | ||
* ऑपरेशन कोड या निमोनिक कॉलम 1 के दाईं ओर किसी भी कॉलम में | * ऑपरेशन कोड या निमोनिक कॉलम 1 के दाईं ओर किसी भी कॉलम में प्रारम्भ हो सकता है, जिसे स्टेटमेंट लेबल से एक रिक्त स्थान से अलग किया गया है। ऑपरेशन कोड केवल एक मशीन निर्देश होगा (मैक्रोज़ उपलब्ध नहीं थे), जिससे यह सामान्यतः 1, 2, 3, या शायद ही कभी 4 अक्षर बन जाता है। ऑपरेशन कोड को आठ वर्णों तक, फिर बाद में प्रभावी रूप से असीमित लंबाई तक बढ़ाने के लिए बढ़ाया गया था। | ||
* ऑपरेंड फ़ील्ड ऑपरेशन कोड के दाईं ओर किसी भी कॉलम में | * ऑपरेंड फ़ील्ड ऑपरेशन कोड के दाईं ओर किसी भी कॉलम में प्रारम्भ हो सकता है, जो ऑपरेशन कोड से कम से कम एक रिक्त स्थान से अलग होता है। वर्ण स्थिरांक को छोड़कर ऑपरेंड में रिक्त स्थान अमान्य हैं। एक या अधिक ऑपरेंड से युक्त ऑपरेंड फ़ील्ड, ऑपरेशन कोड के आधार पर वैकल्पिक है। | ||
* वैकल्पिक टिप्पणियाँ ऑपरेंड फ़ील्ड के दाईं ओर कम से कम एक रिक्त स्थान से अलग दिखाई दे सकती हैं। | * वैकल्पिक टिप्पणियाँ ऑपरेंड फ़ील्ड के दाईं ओर कम से कम एक रिक्त स्थान से अलग दिखाई दे सकती हैं। | ||
*''बेसिक'' असेंबली लैंग्वेज स्टेटमेंट को जारी रखने की अनुमति नहीं देती है। असेंबलर के बाद के संस्करणों में जारी स्टेटमेंट के कॉलम 72 में किसी भी गैर-रिक्त वर्ण की उपस्थिति से निरंतरता का संकेत मिलता है। बेसिक असेंबली लैंग्वेज के लिए आवश्यक है कि कॉलम 72 खाली रहे। | *''बेसिक'' असेंबली लैंग्वेज स्टेटमेंट को जारी रखने की अनुमति नहीं देती है। असेंबलर के बाद के संस्करणों में जारी स्टेटमेंट के कॉलम 72 में किसी भी गैर-रिक्त वर्ण की उपस्थिति से निरंतरता का संकेत मिलता है। बेसिक असेंबली लैंग्वेज के लिए आवश्यक है कि कॉलम 72 खाली रहे। | ||
* एक पूर्ण-कार्ड टिप्पणी को कॉलम 1 में तारांकन चिह्न (*) द्वारा दर्शाया गया है। | * एक पूर्ण-कार्ड टिप्पणी को कॉलम 1 में तारांकन चिह्न (*) द्वारा दर्शाया गया है। | ||
* कार्ड कॉलम 73-80, जिसे पहचान-अनुक्रम फ़ील्ड कहा जाता है, प्रोग्रामर द्वारा किसी भी उद्देश्य के लिए उपयोग किया जा सकता है, लेकिन | * कार्ड कॉलम 73-80, जिसे पहचान-अनुक्रम फ़ील्ड कहा जाता है, प्रोग्रामर द्वारा किसी भी उद्देश्य के लिए उपयोग किया जा सकता है, लेकिन सामान्यतः इसमें अव्यवस्थित कार्ड डेक का सहारा लेने के लिए अनुक्रम संख्याएं होती हैं। | ||
बेसिक असेंबली लैंग्वेज कॉलम 25 से | बेसिक असेंबली लैंग्वेज कॉलम 25 से प्रारम्भ होने वाले स्टेटमेंट के साथ एक वैकल्पिक स्टेटमेंट फॉर्मेट की भी अनुमति देती है, जिससे असेंबल किए गए निर्देश को कॉलम 1 से प्रारम्भ होने वाले उसी कार्ड में पंच किया जा सकता है। यह विकल्प असेंबलर के बाद के संस्करणों में जारी नहीं रखा गया था। | ||
==निर्देशों के प्रकार== | ==निर्देशों के प्रकार== | ||
Line 69: | Line 69: | ||
===असेंबलर निर्देश=== | ===असेंबलर निर्देश=== | ||
असेंबलर निर्देश, जिन्हें कभी-कभी अन्य प्रणालियों पर निर्देश, छद्म संचालन या छद्मऑप्स भी कहा जाता है, असेंबलर से कोड जनरेशन प्रक्रिया के दौरान विभिन्न संचालन करने के लिए अनुरोध हैं। उदाहरण के लिए, <code>CSECT</code> का अर्थ है "यहां कोड का एक अनुभाग | असेंबलर निर्देश, जिन्हें कभी-कभी अन्य प्रणालियों पर निर्देश, छद्म संचालन या छद्मऑप्स भी कहा जाता है, असेंबलर से कोड जनरेशन प्रक्रिया के दौरान विभिन्न संचालन करने के लिए अनुरोध हैं। उदाहरण के लिए, <code>CSECT</code> का अर्थ है "यहां कोड का एक अनुभाग प्रारम्भ करें"; <code>DC</code>ऑब्जेक्ट कोड में रखे जाने वाले एक स्थिरांक को परिभाषित करता है। | ||
अधिक महत्वपूर्ण असेंबलर निर्देशों में से एक <code>USING</code> है, जो S/360 आर्किटेक्चर के संक्षिप्त एड्रेसिंग का समर्थन करता है। यह असेंबलर को यह निर्धारित करने में मार्गदर्शन करता है कि उसे किसी सापेक्ष पते के लिए किस आधार रजिस्टर और ऑफसेट का उपयोग करना चाहिए। BAL में, यह फॉर्म तक ही सीमित था | अधिक महत्वपूर्ण असेंबलर निर्देशों में से एक <code>USING</code> है, जो S/360 आर्किटेक्चर के संक्षिप्त एड्रेसिंग का समर्थन करता है। यह असेंबलर को यह निर्धारित करने में मार्गदर्शन करता है कि उसे किसी सापेक्ष पते के लिए किस आधार रजिस्टर और ऑफसेट का उपयोग करना चाहिए। BAL में, यह फॉर्म तक ही सीमित था | ||
Line 100: | Line 100: | ||
BE THERE branch if equal to program label 'THERE' | BE THERE branch if equal to program label 'THERE' | ||
</syntaxhighlight> | </syntaxhighlight> | ||
सामान्यतः स्वीकृत मानकों में, हालांकि किसी भी तरह से अनिवार्य नहीं है, इसमें निमोनिक्स के साथ सामान्य-उद्देश्य रजिस्टरों की पहचान सम्मिलित है। कुछ अन्य प्रणालियों, जैसे कि X86 असेंबली लैंग्वेज, के लिए असेंबलरों के विपरीत, रजिस्टर निमोनिक्स आरक्षित प्रतीक नहीं हैं, बल्कि प्रोग्राम में कहीं और EQU स्टेटमेंट के माध्यम से परिभाषित किए जाते हैं। यह असेंबलर लैंग्वेज प्रोग्राम की पठनीयता में सुधार करता है और रजिस्टर उपयोग का क्रॉस-रेफरेंस प्रदान करता है। इस प्रकार सामान्यतः आप एक असेंबलर प्रोग्राम में निम्नलिखित देख सकते हैं: | |||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
Line 107: | Line 107: | ||
L R3,ZIGGY | L R3,ZIGGY | ||
</syntaxhighlight> | </syntaxhighlight> | ||
कॉल के लिए कुछ उल्लेखनीय अनुदेश निमोनिक्स <code>BALR</code>{{efn|Most uses of '''BALR''' have been replaced by <code title{{=}}"Branch And Save Register">BASR</code> and similar instructions.}} हैं, जो एक रजिस्टर में रिटर्न एड्रेस और कंडीशन कोड को संग्रहीत करते हैं, SVC,{{efn|Many uses of <code title{{=}}"SuperVisor Call">[[Supervisor Call instruction|SVC]]</code> have been replaced by a <code title{{=}}"Program Call">PC</code> instruction.}} DIAG,{{efn|VM repurposes <code title{{=}}"Diagnose">DIAG</code> as an <code title{{=}}"Hypervisor Call">[[Hypervisor|HVC]]</code> instruction.}} और ZAP।<ref name="opl_bobm" /> उत्तरार्द्ध ने छद्म नाम <code>WAMOZART</code> का उपयोग करके एक प्रोग्रामर द्वारा SuperZAP, cf. ''फ्री ऑन-लाइन'' ''कंप्यूटिंग'' शब्दकोश पर सुपरज़ैप उपयोगिता के नाम को प्रेरित किया था। | कॉल के लिए कुछ उल्लेखनीय अनुदेश निमोनिक्स <code>BALR</code>{{efn|Most uses of '''BALR''' have been replaced by <code title{{=}}"Branch And Save Register">BASR</code> and similar instructions.}} हैं, जो एक रजिस्टर में रिटर्न एड्रेस और कंडीशन कोड को संग्रहीत करते हैं, SVC,{{efn|Many uses of <code title{{=}}"SuperVisor Call">[[Supervisor Call instruction|SVC]]</code> have been replaced by a <code title{{=}}"Program Call">PC</code> instruction.}} DIAG,{{efn|VM repurposes <code title{{=}}"Diagnose">DIAG</code> as an <code title{{=}}"Hypervisor Call">[[Hypervisor|HVC]]</code> instruction.}} और ZAP।<ref name="opl_bobm" /> उत्तरार्द्ध ने छद्म नाम <code>WAMOZART</code> का उपयोग करके एक प्रोग्रामर द्वारा SuperZAP, cf. ''फ्री ऑन-लाइन'' ''कंप्यूटिंग'' शब्दकोश पर सुपरज़ैप उपयोगिता के नाम को प्रेरित किया था। | ||
सिस्टम/360 मशीन निर्देश एक, दो, या तीन आधे शब्द लंबे (दो से 6 बाइट्स) हैं। मूल रूप से चार अनुदेश प्रारूप थे, जिन्हें ऑपरेशन कोड फ़ील्ड के पहले दो बिट्स द्वारा निर्दिष्ट किया गया था; ज़ेड/आर्किटेक्चर ने अतिरिक्त प्रारूप जोड़े। | सिस्टम/360 मशीन निर्देश एक, दो, या तीन आधे शब्द लंबे (दो से 6 बाइट्स) हैं। मूल रूप से चार अनुदेश प्रारूप थे, जिन्हें ऑपरेशन कोड फ़ील्ड के पहले दो बिट्स द्वारा निर्दिष्ट किया गया था; ज़ेड/आर्किटेक्चर ने अतिरिक्त प्रारूप जोड़े। | ||
===मैक्रोज़ और सशर्त असेंबली=== | ===मैक्रोज़ और सशर्त असेंबली=== | ||
बेसिक असेम्बलर | बेसिक असेम्बलर लैंग्वेज मैक्रोज़ का समर्थन नहीं करती. बाद के असेंबलर संस्करण प्रोग्रामर को निर्देशों को मैक्रोज़ में एक साथ समूहित करने और उन्हें एक लाइब्रेरी में जोड़ने की अनुमति देते हैं, जिसे बाद में अन्य कार्यक्रमों में लागू किया जा सकता है, सामान्यतः सी और संबंधित लैंग्वेज में प्रीप्रोसेसर सुविधाओं जैसे मापदंडों के साथ। मैक्रोज़ में सशर्त असेंबलर निर्देश सम्मिलित हो सकते हैं, जैसे कि <code>AIF</code> (एक 'यदि' निर्माण), जिसका उपयोग चुने हुए मापदंडों के अनुसार अलग-अलग कोड उत्पन्न करने के लिए किया जाता है। यह इस असेंबलर की स्थूल सुविधा को बहुत शक्तिशाली बनाता है। जबकि C में मल्टीलाइन मैक्रोज़ एक अपवाद हैं, असेंबलर में मैक्रो परिभाषाएँ आसानी से सैकड़ों पंक्तियाँ हो सकती हैं। | ||
===[[ऑपरेटिंग सिस्टम]] मैक्रोज़=== | ===[[ऑपरेटिंग सिस्टम]] मैक्रोज़=== | ||
अधिकांश प्रोग्रामों को ऑपरेटिंग सिस्टम से सेवाओं की आवश्यकता होगी, और OS उन सेवाओं के अनुरोध के लिए मानक मैक्रोज़ प्रदान करता है। ये [[यूनिक्स]] [[सिस्टम कॉल]] के अनुरूप हैं। उदाहरण के लिए, [[एमवीएस]] (बाद में z/OS) में, स्टोरेज (OBTAIN पैरामीटर के साथ) गतिशील रूप से मेमोरी के एक ब्लॉक को आवंटित करता है, और GET एक फ़ाइल से अगले तार्किक रिकॉर्ड को पुनः प्राप्त करता है। | अधिकांश प्रोग्रामों को ऑपरेटिंग सिस्टम से सेवाओं की आवश्यकता होगी, और OS उन सेवाओं के अनुरोध के लिए मानक मैक्रोज़ प्रदान करता है। ये [[यूनिक्स]] [[सिस्टम कॉल]] के अनुरूप हैं। उदाहरण के लिए, [[एमवीएस]] (बाद में z/OS) में, स्टोरेज (OBTAIN पैरामीटर के साथ) गतिशील रूप से मेमोरी के एक ब्लॉक को आवंटित करता है, और GET एक फ़ाइल से अगले तार्किक रिकॉर्ड को पुनः प्राप्त करता है। | ||
ये मैक्रोज़ ऑपरेटिंग सिस्टम पर निर्भर हैं; कई उच्च स्तरीय | ये मैक्रोज़ ऑपरेटिंग सिस्टम पर निर्भर हैं; कई उच्च स्तरीय लैंग्वेज के विपरीत, आईबीएम मेनफ्रेम असेंबली भाषाएं मेमोरी आवंटित करने, I/O संचालन करने आदि के लिए ऑपरेटिंग-सिस्टम-स्वतंत्र स्टेटमेंट या लाइब्रेरी प्रदान नहीं करती हैं, और विभिन्न IBM मेनफ़्रेम ऑपरेटिंग सिस्टम सिस्टम सेवा स्तर पर संगत नहीं हैं। उदाहरण के लिए, अनुक्रमिक फ़ाइल लिखने को z/OS और z/VSE में अलग-अलग तरीके से कोड किया जाएगा। | ||
==उदाहरण== | ==उदाहरण== | ||
निम्नलिखित अंश दिखाता है कि "If SEX = 'M' है, तो | निम्नलिखित अंश दिखाता है कि "If SEX = 'M' है, तो मेल में 1 जोड़ें; अन्यथा, फीमेल में 1 जोड़ें" असेंबलर में कैसे निष्पादित किया जाएगा। | ||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
Line 164: | Line 164: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<code>WTO</code> एक असेंबलर मैक्रो है जो एक ऑपरेटिंग सिस्टम कॉल उत्पन्न करता है। रजिस्टरों को सहेजने और बाद में पुनर्स्थापित करने और वापस करने के कारण, यह छोटा प्रोग्राम ऑपरेटिंग सिस्टम [[ कार्य नियंत्रण भाषा ]] (जेसीएल) द्वारा सीधे लागू बैच प्रोग्राम के रूप में प्रयोग योग्य है: | <code>WTO</code> एक असेंबलर मैक्रो है जो एक ऑपरेटिंग सिस्टम कॉल उत्पन्न करता है। रजिस्टरों को सहेजने और बाद में पुनर्स्थापित करने और वापस करने के कारण, यह छोटा प्रोग्राम ऑपरेटिंग सिस्टम [[ कार्य नियंत्रण भाषा | कार्य नियंत्रण लैंग्वेज]] (जेसीएल) द्वारा सीधे लागू बैच प्रोग्राम के रूप में प्रयोग योग्य है: | ||
<syntaxhighlight lang="jcl"> | <syntaxhighlight lang="jcl"> | ||
Line 217: | Line 217: | ||
===असेंबलर ई और F=== | ===असेंबलर ई और F=== | ||
असेंबलर ई को न्यूनतम 32 केबी मुख्य स्टोरेज के साथ | असेंबलर ई को न्यूनतम 32 केबी मुख्य स्टोरेज के साथ OS/360 सिस्टम पर चलने के लिए डिज़ाइन किया गया था, जबकि असेंबलर को 15 केबी की आवश्यकता होती है।<ref>{{cite book|last=IBM Corporation|title=IBM System/360 Operating System Assembler (32K) Program Logic Manual|year=1966|url=http://bitsavers.trailing-edge.com/pdf/ibm/360/asm/Y26-3598-0_32k_asmPLM_1966.pdf}}</ref>{{rp|p.2}} असेंबलर F 64 KB मेमोरी वाले सिस्टम पर DOS/360 या OS/360 के तहत चल सकता है, असेंबलर को 44 KB की आवश्यकता होती है।<ref>{{cite book|last=IBM Corporation|title=IBM System/360 Disk Operating System Assembler(F) Program Logic|year=1968|url=http://bitsavers.trailing-edge.com/pdf/ibm/360/asm/Y26-3716-0_asm%28f%29_plm_Mar68.pdf}}</ref><ref>{{cite book|last=IBM Corporation|title=IBM System/360 Assembler(F) Program Logic|year=1971|url=http://bitsavers.trailing-edge.com/pdf/ibm/360/asm/GY26-3700-2_asm%28f%29_plm_Jun71.pdf}}</ref><ref>{{cite book|last=IBM Corporation|title=आईबीएम ओएस असेंबलर भाषा|year=1974|url=http://www.textfiles.com/bitsavers/pdf/ibm/360/asm/GC28-6514-9_OS_Assembler_Rel21_Jan74.pdf}}</ref> ये असेंबलर OS/360 का एक मानक भाग हैं; जो संस्करण तैयार किया गया था वह [[सिस्टम जेनरेशन (ओएस)|सिस्टम जेनरेशन (OS)]]OS) (SYSGEN) में निर्दिष्ट किया गया था। | ||
===मॉडल 44 प्रोग्रामिंग सिस्टम असेंबलर=== | ===मॉडल 44 प्रोग्रामिंग सिस्टम असेंबलर=== | ||
"कुछ अपवादों के साथ, आईबीएम सिस्टम/360 मॉडल 44 प्रोग्रामिंग सिस्टम असेंबलर लैंग्वेज आईबीएम सिस्टम/360 प्रोग्रामिंग सपोर्ट में उपलब्ध | "कुछ अपवादों के साथ, आईबीएम सिस्टम/360 मॉडल 44 प्रोग्रामिंग सिस्टम असेंबलर लैंग्वेज आईबीएम सिस्टम/360 प्रोग्रामिंग सपोर्ट में उपलब्ध लैंग्वेज का एक चयनित उपसमूह है।" सबसे महत्वपूर्ण बात यह है कि मॉडल 44 असेंबलर में मैक्रोज़ और निरंतरता विवरणों के लिए समर्थन का अभाव था। दूसरी ओर इसमें कई ऐसी विशेषताएं थीं जो अन्य सिस्टम/360 असेंबलरों में नहीं पाई गईं - विशेष रूप से कार्ड छवि स्रोत डेटासेट को अपडेट करने के निर्देश, जिसे सामान्य नाम दिया गया, और <code>SETA</code>असेंबलर वेरिएबल्स की अंतर्निहित परिभाषा।<ref>{{cite book |last1=IBM Corporation |title=IBM System/360 Model 44 Programming System Assembler Language |date=1966 |page=73 |url=http://bitsavers.org/pdf/ibm/360/model44/C28-6811-1_Model_44_Programming_System_Assembler_Language_1966.pdf |accessdate=July 2, 2019}}</ref> | ||
===असेम्बलर G=== | ===असेम्बलर G=== | ||
Line 226: | Line 226: | ||
===असेम्बलर H=== | ===असेम्बलर H=== | ||
असेंबलर H OS/360 और उसके उत्तराधिकारियों पर चलता है; यह असेंबलर F की तुलना में तेज़ और अधिक शक्तिशाली था, लेकिन मैक्रो | असेंबलर H OS/360 और उसके उत्तराधिकारियों पर चलता है; यह असेंबलर F की तुलना में तेज़ और अधिक शक्तिशाली था, लेकिन मैक्रो लैंग्वेज पूरी तरह से संगत नहीं थी। | ||
असेंबलर H संस्करण 2 की घोषणा 1981 में की गई थी और इसमें एक्सटेंडेड आर्किटेक्चर (XA) के लिए समर्थन सम्मिलित है,<ref>{{cite book|last=IBM Corporation|title=MVS/Extended Architecture Conversion Notebook|year=1984|url=http://bitsavers.trailing-edge.com/pdf/ibm/370/MVS_XA/GC28-1143-2_MVS_EA_Conversion_Notebook_May84.pdf}}</ref>{{rp|p.3–28}}जिसमें AMODE और RMODE निर्देश सम्मिलित हैं। उच्च स्तरीय असेंबलर द्वारा.<ref>{{cite web|last=IBM Corporation|title=5668-962 IBM Assembler H Version 2 Release 1.0|date=20 December 1996|url=http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=dd&subtype=sm&appname=ShopzSeries&htmlfid=897/ENUS5668-962|accessdate=October 8, 2012}}</ref> | |||
===असेम्बलर XF=== | ===असेम्बलर XF=== | ||
असेंबलर एक्सएफ, असेंबलर F का अपग्रेड है जिसमें नए सिस्टम/370 आर्किटेक्चर निर्देश | असेंबलर एक्सएफ, असेंबलर F का अपग्रेड है जिसमें नए सिस्टम/370 आर्किटेक्चर निर्देश सम्मिलित हैं। यह संस्करण OS/VS और DOS/VS सिस्टम के लिए एक सामान्य असेंबलर प्रदान करता है। अन्य परिवर्तनों में अभिव्यक्ति और मैक्रो प्रोसेसिंग पर प्रतिबंधों में ढील देना सम्मिलित है। असेंबलर XF को न्यूनतम 64 KB (वर्चुअल) विभाजन/क्षेत्र आकार की आवश्यकता होती है। अनुशंसित आकार 128 KB है.<ref>{{cite book|last=IBM Corporation|title=OS/VS Assembler Programmer's Guide|year=1973|url=http://bitsavers.trailing-edge.com/pdf/ibm/370/OS_VS/GC33-4021-1_OS_VS_Assembler_Programmers_Guide_May73.pdf}}</ref>{{rp|p.73}} | ||
===हाई लेवल असेंबलर=== | ===हाई लेवल असेंबलर=== | ||
हाई लेवल असेंबलर या HLASM को जून 1992 में आईबीएम के असेंबलर H संस्करण 2 के स्थान पर जारी किया गया था।<ref>{{cite web|last=IBM Corporation|title=आईबीएम हाई लेवल असेंबलर और टूलकिट फ़ीचर - रिलीज़ इतिहास|url=http://www-01.ibm.com/software/awdtools/hlasm/history.html|accessdate=October 21, 2012}}</ref><ref>{{cite web|last=IBM Corporation|title=Announcement Letter 292-244: IBM HIGH LEVEL ASSEMBLER/MVS & VM & VSE|date=5 May 1992 |url=http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=an&subtype=ca&htmlfid=897/ENUS292-244&language=enus|accessdate=October 21, 2012}}</ref> यह सिस्टम/370 और सिस्टम/390 के लिए डिफ़ॉल्ट अनुवादक था, और MVS, VSE और VM ऑपरेटिंग सिस्टम का समर्थन करता था। 2023 तक यह अपने z/OS, z/VSE, z/VM और z/TPF ऑपरेटिंग सिस्टम के लिए z/आर्किटेक्चर मेनफ्रेम कंप्यूटर पर IBM की वर्तमान असेंबलर प्रोग्रामिंग | हाई लेवल असेंबलर या HLASM को जून 1992 में आईबीएम के असेंबलर H संस्करण 2 के स्थान पर जारी किया गया था।<ref>{{cite web|last=IBM Corporation|title=आईबीएम हाई लेवल असेंबलर और टूलकिट फ़ीचर - रिलीज़ इतिहास|url=http://www-01.ibm.com/software/awdtools/hlasm/history.html|accessdate=October 21, 2012}}</ref><ref>{{cite web|last=IBM Corporation|title=Announcement Letter 292-244: IBM HIGH LEVEL ASSEMBLER/MVS & VM & VSE|date=5 May 1992 |url=http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=an&subtype=ca&htmlfid=897/ENUS292-244&language=enus|accessdate=October 21, 2012}}</ref> यह सिस्टम/370 और सिस्टम/390 के लिए डिफ़ॉल्ट अनुवादक था, और MVS, VSE और VM ऑपरेटिंग सिस्टम का समर्थन करता था। 2023 तक यह अपने z/OS, z/VSE, z/VM और z/TPF ऑपरेटिंग सिस्टम के लिए z/आर्किटेक्चर मेनफ्रेम कंप्यूटर पर IBM की वर्तमान असेंबलर प्रोग्रामिंग लैंग्वेज है। रिलीज 6 और बाद में [[लिनक्स]] पर भी चलता है, और ईएलएफ या जीओएफएफ ऑब्जेक्ट फ़ाइलें उत्पन्न करता है (इस वातावरण को कभी-कभी आईबीएम Z पर लिनक्स के रूप में संदर्भित किया जाता है)। [[आईबीएम]] में काम करते समय, जॉन रॉबर्ट एहरमैन ने HLASM{{efn|HLASM followed a SHARE requirement to incorporate Greg Mushial's enhancements<ref>{{citation | ||
| title = Module 24: SLAC Enhancements to and Beautifications of the IBM H-Level Assembler for Version 2.8 | | title = Module 24: SLAC Enhancements to and Beautifications of the IBM H-Level Assembler for Version 2.8 | ||
| author = Greg Mushial | | author = Greg Mushial | ||
Line 246: | Line 244: | ||
</ref> to Assembler H into the supported product.}} का निर्माण किया<ref>{{cite book|last=IBM Corporation|title=zSeries उपयोगकर्ता गाइड पर लिनक्स के लिए उच्च स्तरीय असेंबलर|year=2008|url=http://publibfp.dhe.ibm.com/epubs/pdf/asml1020.pdf}}</ref> और वह इसके प्रमुख डेवलपर थे और उन्हें "उच्च स्तरीय असेंबलर का जनक" माना जाता है।<ref>{{cite web |title=जॉन आर. एहरमन संग्रह के लिए गाइड|id=X5621.2010 |publisher=[[Online Archive of California]] |url=https://oac.cdlib.org/findaid/ark:/13030/c8xk8mnr/ |access-date=2022-10-15 |url-status=live |archive-url=https://web.archive.org/web/20221015170120/https://oac.cdlib.org/findaid/ark:/13030/c8xk8mnr/ |archive-date=2022-10-15}} [https://web.archive.org/web/20220419202358/http://pdf.oac.cdlib.org/pdf/camvchm/102733967-Ehrman.pdf]</ref> | </ref> to Assembler H into the supported product.}} का निर्माण किया<ref>{{cite book|last=IBM Corporation|title=zSeries उपयोगकर्ता गाइड पर लिनक्स के लिए उच्च स्तरीय असेंबलर|year=2008|url=http://publibfp.dhe.ibm.com/epubs/pdf/asml1020.pdf}}</ref> और वह इसके प्रमुख डेवलपर थे और उन्हें "उच्च स्तरीय असेंबलर का जनक" माना जाता है।<ref>{{cite web |title=जॉन आर. एहरमन संग्रह के लिए गाइड|id=X5621.2010 |publisher=[[Online Archive of California]] |url=https://oac.cdlib.org/findaid/ark:/13030/c8xk8mnr/ |access-date=2022-10-15 |url-status=live |archive-url=https://web.archive.org/web/20221015170120/https://oac.cdlib.org/findaid/ark:/13030/c8xk8mnr/ |archive-date=2022-10-15}} [https://web.archive.org/web/20220419202358/http://pdf.oac.cdlib.org/pdf/camvchm/102733967-Ehrman.pdf]</ref> | ||
नाम के स्थान पर, HLASM में सामान्यतः उच्च-स्तरीय असेंबलर से जुड़ी कई सुविधाएं नहीं होती हैं। यह नाम अतिरिक्त मैक्रो लैंग्वेज क्षमताओं से आ सकता है, जैसे उपयोगकर्ता-परिभाषित फ़ंक्शन लिखने की क्षमता। असेंबलर अधिकतर असेंबलर H और असेंबलर (XF) के समान है, जिसमें एसएलएसी (स्टैनफोर्ड लीनियर एक्सेलेरेटर) संशोधन सम्मिलित हैं। जोड़ी गई सुविधाओं में स्थान काउंटर, डिपेंडेंट{{efn|A dependent USING is one that specifies a relocatable expression instead of a list of registers: | |||
नाम के स्थान पर, HLASM में | |||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
USING IHADCB,SYSPRINT | USING IHADCB,SYSPRINT | ||
Line 278: | Line 275: | ||
====हाई लेवल असेंबलर टूलकिट==== | ====हाई लेवल असेंबलर टूलकिट==== | ||
हाई लेवल असेंबलर टूलकिट हाई लेवल असेंबलर के लिए एक अलग कीमत वाली संगत है। टूलकिट में | हाई लेवल असेंबलर टूलकिट हाई लेवल असेंबलर के लिए एक अलग कीमत वाली संगत है। टूलकिट में सम्मिलित हैं:<ref>{{cite web|last=IBM Corporation|title=टूलकिट फ़ीचर घटक|url=http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp?topic=%2Fcom.ibm.zos.r12.asmk200%2Fasmtug20.htm|accessdate=October 21, 2012}}</ref> | ||
* [[संरचित प्रोग्रामिंग]] मैक्रो (कंप्यूटर विज्ञान) का एक सेट - | |||
**यदि/अन्यथा/समाप्ति | **यदि/अन्यथा/समाप्ति | ||
**करें/समाप्त करें | **करें/समाप्त करें | ||
Line 284: | Line 283: | ||
**कैसेंट्री/केस/एंडकेस | **कैसेंट्री/केस/एंडकेस | ||
**चुनें/कब/अन्यथा/अंत करें। | **चुनें/कब/अन्यथा/अंत करें। | ||
* | * अलग करनेवाला | ||
* एक प्रोग्राम अंडरस्टैंडिंग टूल (रीइंजीनियरिंग (सॉफ्टवेयर)|री-इंजीनियरिंग सहायता)। | * एक प्रोग्राम अंडरस्टैंडिंग टूल (रीइंजीनियरिंग (सॉफ्टवेयर)|री-इंजीनियरिंग सहायता)। | ||
* एक स्रोत एक्सआरईएफ उपयोगिता (क्रॉस-रेफरेंस सुविधा)। | * एक स्रोत एक्सआरईएफ उपयोगिता (क्रॉस-रेफरेंस सुविधा)। | ||
Line 293: | Line 292: | ||
===आईबीएम सिस्टम/360 मॉडल 44 पीएस असेंबलर=== | ===आईबीएम सिस्टम/360 मॉडल 44 पीएस असेंबलर=== | ||
आईबीएम सिस्टम/360 मॉडल 44 प्रोग्रामिंग सिस्टम असेंबलर एक ऐसी | आईबीएम सिस्टम/360 मॉडल 44 प्रोग्रामिंग सिस्टम असेंबलर एक ऐसी लैंग्वेज को संसाधित करता है जो OS/360 और DOS/360 असेंबलर लैंग्वेज का एक चयनित उपसमूह है। इसमें स्टोरेज-टू-स्टोरेज (एसएस) निर्देशों या बाइनरी में कनवर्ट करने के लिए कोई समर्थन नहीं है (<code>CVB</code>), दशमलव में कनवर्ट करें (<code>CVD</code>), सीधे पढ़ें (<code>RDD</code>) और सीधे लिखें (<code>WRD</code>) निर्देश।<ref name=M44>{{cite book|last=IBM Corporation|title=IBM System/360 Model 44 Programming System Assembler Language|year=1966|url=http://bitsavers.trailing-edge.com/pdf/ibm/360/model44/c28-6811-1_360_44_Asm.pdf}}</ref> इसमें मॉडल 44 के लिए अद्वितीय चार निर्देश सम्मिलित हैं: प्राथमिकता मास्क बदलें (<code>CHPM</code>), लोड पीएसडब्ल्यू स्पेशल (<code>LPSX</code>), डायरेक्ट वर्ड पढ़ें (<code>RDDW</code>), और डायरेक्ट वर्ड लिखें (<code>WRDW</code>). इसमें स्रोत प्रोग्राम को अद्यतन करने के निर्देश भी सम्मिलित हैं, जो अन्य प्रणालियों में उपयोगिता कार्यक्रमों द्वारा किया जाने वाला कार्य है (<code>SKPTO</code>, <code>REWND</code>, <code>NUM</code>, <code>OMIT</code> और <code>ENDUP</code>). यह सामान्य और अंतर्निहित रूप से परिभाषित नाम प्रदान करता है <code>&SETA</code> प्रतीक, लेकिन कुछ प्रतिबंध भी हैं।<ref name=M44 />{{rp|pp.53,73}} | ||
===आईबीएम सिस्टम/360 टीएसएस असेंबलर=== | ===आईबीएम सिस्टम/360 टीएसएस असेंबलर=== | ||
TSS/360|सिस्टम/360 मॉडल 67 टाइम शेयरिंग सिस्टम के लिए असेंबलर में अद्वितीय TSS सुविधाओं का समर्थन करने के निर्देशों में कई अंतर हैं। <code>''PSECT''</code> ई> निर्देश एक प्रोटोटाइप नियंत्रण अनुभाग उत्पन्न करता है जिसमें प्रोग्राम द्वारा उपयोग किए जाने वाले स्थानांतरण योग्य पता स्थिरांक और परिवर्तनीय डेटा | TSS/360|सिस्टम/360 मॉडल 67 टाइम शेयरिंग सिस्टम के लिए असेंबलर में अद्वितीय TSS सुविधाओं का समर्थन करने के निर्देशों में कई अंतर हैं। <code>''PSECT''</code> ई> निर्देश एक प्रोटोटाइप नियंत्रण अनुभाग उत्पन्न करता है जिसमें प्रोग्राम द्वारा उपयोग किए जाने वाले स्थानांतरण योग्य पता स्थिरांक और परिवर्तनीय डेटा सम्मिलित होता है।<ref>{{cite book|last=IBM Corporation|title=आईबीएम टाइम शेयरिंग सिस्टम असेंबलर प्रोग्रामर गाइड|year=1976|url=http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/360/tss/GC28-2032-6_Time_Sharing_System_Assembler_Programmers_Guide_Apr76.pdf}}</ref>{{rp|p.143}} | ||
==गैर-आईबीएम असेंबलर== | ==गैर-आईबीएम असेंबलर== | ||
विशेष वातावरण के लिए कई आईबीएम-संगत असेंबलर | विशेष वातावरण के लिए कई आईबीएम-संगत असेंबलर उपस्थित हैं।<ref>{{cite web|last=Alcock|first=David|title=Dave's z/Architecture Assembler FAQ|url=http://planetmvs.com/hlasm/s390faq.html#PCASM|work=Planet MVS|accessdate=December 15, 2012}}</ref> | ||
* [[यूनिसिस]] की यूनिवैक सीरीज 90|यूनिवैक 90/60, 90/70 और 90/80 सीरीज को आईबीएम-फॉर्मेट असेंबलर को स्वीकार करने के लिए डिजाइन किया गया था, क्योंकि मशीन श्रृंखला एस/360 और एस/370 के समान थी। | * [[यूनिसिस]] की यूनिवैक सीरीज 90|यूनिवैक 90/60, 90/70 और 90/80 सीरीज को आईबीएम-फॉर्मेट असेंबलर को स्वीकार करने के लिए डिजाइन किया गया था, क्योंकि मशीन श्रृंखला एस/360 और एस/370 के समान थी। | ||
* फुजित्सु बीएस2000 श्रृंखला को भी यूनिवैक के समान संसाधन से 370 वर्कलाइक के रूप में बनाया गया था, और अभी भी यूरोप के कुछ हिस्सों में उपयोग में है।<ref>Fujitsu ASSEMH manuals available from http://manuals.ts.fujitsu.com/index.php?id=1-2-2926-15435 (Retrieved 2016-02-27)</ref> | * फुजित्सु बीएस2000 श्रृंखला को भी यूनिवैक के समान संसाधन से 370 वर्कलाइक के रूप में बनाया गया था, और अभी भी यूरोप के कुछ हिस्सों में उपयोग में है।<ref>Fujitsu ASSEMH manuals available from http://manuals.ts.fujitsu.com/index.php?id=1-2-2926-15435 (Retrieved 2016-02-27)</ref> | ||
* डिग्नस एलएलसी सिस्टम्स/एएसएम एक HLASM-संगत असेंबलर है जो मूल रूप से आईबीएम सिस्टम पर या क्रॉस-असेंबलर के रूप में चल सकता है।<ref>{{cite web|last=Dignus, LLC|title=Systems/ASM|url=http://www.dignus.com/dasm/|accessdate=December 15, 2012}}</ref> * डॉन हिगिंस द्वारा लिखित फ्रीवेयर पीसी/370 को बाद में [[माइक्रो फोकस इंटरनेशनल]] द्वारा खरीद लिया गया। | * डिग्नस एलएलसी सिस्टम्स/एएसएम एक HLASM-संगत असेंबलर है जो मूल रूप से आईबीएम सिस्टम पर या क्रॉस-असेंबलर के रूप में चल सकता है।<ref>{{cite web|last=Dignus, LLC|title=Systems/ASM|url=http://www.dignus.com/dasm/|accessdate=December 15, 2012}}</ref> | ||
* z390 एक असेंबलर और सिस्टम 390 एमुलेटर है जो डॉन हिगिंस द्वारा लिखा गया है और इसे [[जावा (प्रोग्रामिंग भाषा)]] में प्रोग्राम किया गया है। यह ओपन सोर्स है और http://www.z390.org/ पर उपलब्ध | *डॉन हिगिंस द्वारा लिखित फ्रीवेयर पीसी/370 को बाद में [[माइक्रो फोकस इंटरनेशनल]] द्वारा खरीद लिया गया। | ||
* पेन स्टेट यूनिवर्सिटी ने ASSIST (कंप्यूटिंग) नामक एक पैकेज लिखा, जिसमें एक सिस्टम 370 असेंबलर और दुभाषिया | * z390 एक असेंबलर और सिस्टम 390 एमुलेटर है जो डॉन हिगिंस द्वारा लिखा गया है और इसे [[जावा (प्रोग्रामिंग भाषा)|जावा (प्रोग्रामिंग लैंग्वेज)]] में प्रोग्राम किया गया है। यह ओपन सोर्स है और http://www.z390.org/ पर उपलब्ध है। | ||
* पेन स्टेट यूनिवर्सिटी ने ASSIST (कंप्यूटिंग) नामक एक पैकेज लिखा, जिसमें एक सिस्टम 370 असेंबलर और दुभाषिया सम्मिलित है। | |||
* टैचियन सॉफ्टवेयर एलएलसी टैचियन असेंबलर वर्कबेंच का विपणन करता है जो विंडोज, लिनक्स/x86, S/390 और zSeries, AIX और सोलारिस के लिए लिनक्स पर चलता है।<ref>{{cite web|last=टैचयोन सॉफ्टवेयर LLC|title=टैचयोन सॉफ्टवेयर|url=http://www.tachyonsoft.com/|accessdate=December 15, 2012}}</ref> | * टैचियन सॉफ्टवेयर एलएलसी टैचियन असेंबलर वर्कबेंच का विपणन करता है जो विंडोज, लिनक्स/x86, S/390 और zSeries, AIX और सोलारिस के लिए लिनक्स पर चलता है।<ref>{{cite web|last=टैचयोन सॉफ्टवेयर LLC|title=टैचयोन सॉफ्टवेयर|url=http://www.tachyonsoft.com/|accessdate=December 15, 2012}}</ref> | ||
* [[जीएनयू असेंबलर]] (गैस) आईबीएम | * [[जीएनयू असेंबलर]] (गैस) आईबीएम Z पर लिनक्स के लिए [[जीएनयू कंपाइलर संग्रह]] (जीसीसी) का भाग है। OS/390 और आईबीएम Z पर लिनक्स इस असेंबलर में एक अद्वितीय सिंटैक्स है जो आईबीएम आर्किटेक्चर के लिए अन्य असेंबलरों के साथ असंगत है। | ||
==सामान्य ज्ञान== | ==सामान्य ज्ञान== | ||
Line 338: | Line 338: | ||
* [http://vintagebigblue.org/Compilerator/ASMF/dosvsASMFCompile.php Web enabled IBM Assembler F compiler for small experiments] | * [http://vintagebigblue.org/Compilerator/ASMF/dosvsASMFCompile.php Web enabled IBM Assembler F compiler for small experiments] | ||
* [http://vintagebigblue.org/Compilerator/ASSIST/mvsAssistCompile.php ASSIST – Assembler System for Student Instruction & Systems Teaching] | * [http://vintagebigblue.org/Compilerator/ASSIST/mvsAssistCompile.php ASSIST – Assembler System for Student Instruction & Systems Teaching] | ||
[[Category:Created On 25/07/2023]] | [[Category:Created On 25/07/2023]] | ||
[[Category:Lua-based templates]] | |||
[[Category:Machine Translated Page]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Short description with empty Wikidata description]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:Templates that add a tracking category]] | |||
[[Category:Templates that generate short descriptions]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:असेंबली भाषा सॉफ्टवेयर]] | |||
[[Category:असेंबली भाषाएँ]] | |||
[[Category:आईबीएम सिस्टम/360 मेनफ्रेम लाइन|असेंबली भाषा बेसिक]] | |||
[[Category:आईबीएम सॉफ्टवेयर|बेसिक असेंबली लैंग्वेज]] |
Latest revision as of 16:09, 22 August 2023
Paradigm | असेंबली लैंग्वेज |
---|---|
Developer | आईबीएम |
पहली प्रस्तुति | 1964 |
ओएस | आईबीएम बेसिक प्रोग्रामिंग सपोर्ट, बेसिक ऑपरेटिंग सिस्टम/360 |
लाइसेंस | free |
Paradigm | असेंबली लैंग्वेज |
---|---|
Developer | आईबीएम |
पहली प्रस्तुति | 1992 |
Stable release | संस्करण 1 रिलीज 6
|
ओएस | आईबीएम एमवीएस/ईएसए और सक्सेसर, वीएम/ईएसए और सक्सेसर, वीएसई/ईएसए और सक्सेसर |
लाइसेंस | स्वामित्व |
वेबसाइट | https://www.ibm.com/products/high-level-assembler-and-toolkit-feature |
Major implementations | |
हाई लेवल असेम्बलर |
बेसिक असेंबली लैंग्वेज (BAL) एक अत्यंत प्रतिबंधित असेंबली लैंग्वेज है, जिसे 1964 में पेश किया गया था और इसका उपयोग IBM सिस्टम/360 मेनफ्रेम सिस्टम पर केवल 8 KB मुख्य मेमोरी के साथ किया जाता था, और इनपुट/आउटपुट के लिए केवल एक कार्ड रीडर, एक कार्ड पंच और एक प्रिंटर आईबीएम बेसिक प्रोग्रामिंग सपोर्ट (BPS/360) के भाग के रूप में होता था। BAL के लिए बेसिक असेंबलर बेसिक ऑपरेटिंग सिस्टम/360 (BOS/360) के भाग के रूप में भी उपलब्ध था।
कुछ लोगों ने अन्य असेंबलर लैंग्वेज को संदर्भित करने के लिए BAL शब्द का उपयोग किया, ठीक उसी तरह जैसे उन्होंने सामान्य उत्पादों को संदर्भित करने के लिए कोडक और ज़ेरॉक्स जैसे ट्रेडमार्क शब्दों का उपयोग किया; यह प्रथा ख़त्म हो गई है.
IBM Z के माध्यम से सिस्टम/360 के लिए अन्य ऑपरेटिंग सिस्टम पर असेंबलर, स्पेरी कॉर्पोरेशन द्वारा बनाए गए UNIVAC सीरीज 90 मेनफ्रेम के लिए, और वर्तमान में फुजित्सु द्वारा बनाए गए BS2000 मेनफ्रेम के लिए, इसके सिंटैक्स को विरासत में मिला और बढ़ाया। नवीनतम व्युत्पन्न लैंग्वेज को IBM हाई-लेवल असेंबलर (HLASM) के रूप में जाना जाता है। असेंबलरों के इस समहू का उपयोग करने वाले प्रोग्रामर उन्हें ALC, (असेंबली लैंग्वेज कोडिंग के लिए), या बस "असेंबलर" के रूप में भी संदर्भित करते हैं।
सामान्य विशेषताएँ
चूँकि यह एक असेंबली लैंग्वेज है, BAL IBM मेनफ्रेम आर्किटेक्चर के मूल निर्देश सेट का उपयोग करता है, जिसमें System/360, System/370, System/370-XA, ESA/370, ESA/390, और z/आर्किटेक्चर सम्मिलित हैं।
मशीन निर्देशों की सरलता का अर्थ है कि असेंबलर में लिखे गए प्रोग्राम का स्रोत कोड सामान्यतः COBOL या फोरट्रान के समकक्ष प्रोग्राम की तुलना में अधिक लंबा होगा। अतीत में, हाथ से कोडित असेंबलर कार्यक्रमों की गति को प्रायः इस कमी को पूरा करने के लिए महसूस किया जाता था, लेकिन ऑप्टिमाइज़िंग कंपाइलर, मेनफ्रेम के लिए C और अन्य अग्रिमों के आगमन के साथ, असेंबलर ने अपनी बहुत सारी अपील खो दी है। हालाँकि, आईबीएम असेंबलर को अपग्रेड करना जारी रखता है, और इसका उपयोग अभी भी तब किया जाता है जब गति या बहुत अच्छे नियंत्रण की आवश्यकता सर्वोपरि होती है। हालाँकि, BAL के सभी आईबीएम उत्तराधिकारियों में एक परिष्कृत मैक्रो सुविधा सम्मिलित है जो बहुत अधिक कॉम्पैक्ट स्रोत कोड लिखने की अनुमति देती है।
असेंबलर का उपयोग करने का दूसरा कारण यह है कि सभी ऑपरेटिंग सिस्टम फ़ंक्शंस को उच्च-स्तरीय लैंग्वेज में एक्सेस नहीं किया जा सकता है। मेनफ्रेम ऑपरेटिंग सिस्टम के एप्लिकेशन प्रोग्राम इंटरफ़ेस को असेंबली लैंग्वेज "मैक्रो" निर्देशों के एक सेट के रूप में परिभाषित किया गया है, जो सामान्यतः सुपरवाइज़र कॉल (एसवीसी) को आमंत्रित करता है [उदाहरण के लिए, z/OS पर] या ऑपरेटिंग सिस्टम रूटीन को लागू करने के लिए डायग्नोज़ (DIAG) [उदाहरण के लिए, z/VM] निर्देश। असेंबलर सबरूटीन्स के उपयोग द्वारा उच्च-स्तरीय लैंग्वेज में लिखे गए प्रोग्रामों से ऑपरेटिंग सिस्टम सेवाओं का उपयोग करना संभव है।
असेंबलर स्टेटमेंट फॉर्मेट
असेंबलर लैंग्वेज स्टेटमेंट का प्रारूप 80-कॉलम वाले पंच कार्ड के लेआउट को दर्शाता है, हालांकि क्रमिक संस्करणों ने अधिकांश प्रतिबंधों में ढील दी है।
वैकल्पिक स्टेटमेंट लेबल या नाम एक स्ट्रिंग अल्फ़ान्यूमेरिक वर्ण है जो कॉलम 1 से प्रारम्भ होता है। पहला वर्ण वर्णानुक्रमिक होना चाहिए। बाद के संस्करणों ने लेबल में उपयोग किए गए कानूनी वर्णों में @, #, $ और _ जोड़े, और आकार को प्रारंभिक छह से बढ़ाकर आठ वर्णों तक, फिर लगभग असीमित लंबाई तक बढ़ा दिया।
- वैकल्पिक स्टेटमेंट लेबल या नाम एक स्ट्रिंग अल्फ़ान्यूमेरिक वर्ण है जो कॉलम 1 से प्रारम्भ होता है। पहला वर्ण वर्णानुक्रमिक होना चाहिए। बाद के संस्करणों ने लेबल में उपयोग किए गए कानूनी वर्णों में @, #, $ और _ जोड़े, और आकार को प्रारंभिक छह से बढ़ाकर आठ वर्णों तक, फिर लगभग असीमित लंबाई तक बढ़ा दिया।
- ऑपरेशन कोड या निमोनिक कॉलम 1 के दाईं ओर किसी भी कॉलम में प्रारम्भ हो सकता है, जिसे स्टेटमेंट लेबल से एक रिक्त स्थान से अलग किया गया है। ऑपरेशन कोड केवल एक मशीन निर्देश होगा (मैक्रोज़ उपलब्ध नहीं थे), जिससे यह सामान्यतः 1, 2, 3, या शायद ही कभी 4 अक्षर बन जाता है। ऑपरेशन कोड को आठ वर्णों तक, फिर बाद में प्रभावी रूप से असीमित लंबाई तक बढ़ाने के लिए बढ़ाया गया था।
- ऑपरेंड फ़ील्ड ऑपरेशन कोड के दाईं ओर किसी भी कॉलम में प्रारम्भ हो सकता है, जो ऑपरेशन कोड से कम से कम एक रिक्त स्थान से अलग होता है। वर्ण स्थिरांक को छोड़कर ऑपरेंड में रिक्त स्थान अमान्य हैं। एक या अधिक ऑपरेंड से युक्त ऑपरेंड फ़ील्ड, ऑपरेशन कोड के आधार पर वैकल्पिक है।
- वैकल्पिक टिप्पणियाँ ऑपरेंड फ़ील्ड के दाईं ओर कम से कम एक रिक्त स्थान से अलग दिखाई दे सकती हैं।
- बेसिक असेंबली लैंग्वेज स्टेटमेंट को जारी रखने की अनुमति नहीं देती है। असेंबलर के बाद के संस्करणों में जारी स्टेटमेंट के कॉलम 72 में किसी भी गैर-रिक्त वर्ण की उपस्थिति से निरंतरता का संकेत मिलता है। बेसिक असेंबली लैंग्वेज के लिए आवश्यक है कि कॉलम 72 खाली रहे।
- एक पूर्ण-कार्ड टिप्पणी को कॉलम 1 में तारांकन चिह्न (*) द्वारा दर्शाया गया है।
- कार्ड कॉलम 73-80, जिसे पहचान-अनुक्रम फ़ील्ड कहा जाता है, प्रोग्रामर द्वारा किसी भी उद्देश्य के लिए उपयोग किया जा सकता है, लेकिन सामान्यतः इसमें अव्यवस्थित कार्ड डेक का सहारा लेने के लिए अनुक्रम संख्याएं होती हैं।
बेसिक असेंबली लैंग्वेज कॉलम 25 से प्रारम्भ होने वाले स्टेटमेंट के साथ एक वैकल्पिक स्टेटमेंट फॉर्मेट की भी अनुमति देती है, जिससे असेंबल किए गए निर्देश को कॉलम 1 से प्रारम्भ होने वाले उसी कार्ड में पंच किया जा सकता है। यह विकल्प असेंबलर के बाद के संस्करणों में जारी नहीं रखा गया था।
निर्देशों के प्रकार
असेंबलर में लिखे गए प्रोग्राम के सोर्स कोड में तीन मुख्य प्रकार के निर्देश पाए जाते हैं।
असेंबलर निर्देश
असेंबलर निर्देश, जिन्हें कभी-कभी अन्य प्रणालियों पर निर्देश, छद्म संचालन या छद्मऑप्स भी कहा जाता है, असेंबलर से कोड जनरेशन प्रक्रिया के दौरान विभिन्न संचालन करने के लिए अनुरोध हैं। उदाहरण के लिए, CSECT
का अर्थ है "यहां कोड का एक अनुभाग प्रारम्भ करें"; DC
ऑब्जेक्ट कोड में रखे जाने वाले एक स्थिरांक को परिभाषित करता है।
अधिक महत्वपूर्ण असेंबलर निर्देशों में से एक USING
है, जो S/360 आर्किटेक्चर के संक्षिप्त एड्रेसिंग का समर्थन करता है। यह असेंबलर को यह निर्धारित करने में मार्गदर्शन करता है कि उसे किसी सापेक्ष पते के लिए किस आधार रजिस्टर और ऑफसेट का उपयोग करना चाहिए। BAL में, यह फॉर्म तक ही सीमित था
USING base,reg-1,...,reg-n
मशीन निर्देश (मनमोनिक)
मशीन अनुदेशों के साथ एक-से-एक संबंध होता है। पूर्ण स्मरणीय अनुदेश सेट प्रत्येक अनुदेश सेट के लिए संचालन के सिद्धांत[1] मैनुअल में वर्णित है। उदाहरण:
* This is a comment line
* Load the fullword integer stored at the
* location labeled 'ZIGGY' into general register 3:
L 3,ZIGGY
SLA 4,5 shift the value in general register 4 left by 5 bits
MVC TARGET,SOURCE move characters from location 'SOURCE' to 'TARGET'
AP COUNT,=P'1' add 1 to value in memory location 'COUNT' (packed decimal format)
B NEXT unconditional branch to label 'NEXT'
HERE EQU * This is a label
CLC TARGET,=C'ADDRESS' Compare memory location 'TARGET' to string 'ADDRESS'
BE THERE branch if equal to program label 'THERE'
सामान्यतः स्वीकृत मानकों में, हालांकि किसी भी तरह से अनिवार्य नहीं है, इसमें निमोनिक्स के साथ सामान्य-उद्देश्य रजिस्टरों की पहचान सम्मिलित है। कुछ अन्य प्रणालियों, जैसे कि X86 असेंबली लैंग्वेज, के लिए असेंबलरों के विपरीत, रजिस्टर निमोनिक्स आरक्षित प्रतीक नहीं हैं, बल्कि प्रोग्राम में कहीं और EQU स्टेटमेंट के माध्यम से परिभाषित किए जाते हैं। यह असेंबलर लैंग्वेज प्रोग्राम की पठनीयता में सुधार करता है और रजिस्टर उपयोग का क्रॉस-रेफरेंस प्रदान करता है। इस प्रकार सामान्यतः आप एक असेंबलर प्रोग्राम में निम्नलिखित देख सकते हैं:
R3 EQU 3
...
L R3,ZIGGY
कॉल के लिए कुछ उल्लेखनीय अनुदेश निमोनिक्स BALR
[lower-alpha 1] हैं, जो एक रजिस्टर में रिटर्न एड्रेस और कंडीशन कोड को संग्रहीत करते हैं, SVC,[lower-alpha 2] DIAG,[lower-alpha 3] और ZAP।[2] उत्तरार्द्ध ने छद्म नाम WAMOZART
का उपयोग करके एक प्रोग्रामर द्वारा SuperZAP, cf. फ्री ऑन-लाइन कंप्यूटिंग शब्दकोश पर सुपरज़ैप उपयोगिता के नाम को प्रेरित किया था।
सिस्टम/360 मशीन निर्देश एक, दो, या तीन आधे शब्द लंबे (दो से 6 बाइट्स) हैं। मूल रूप से चार अनुदेश प्रारूप थे, जिन्हें ऑपरेशन कोड फ़ील्ड के पहले दो बिट्स द्वारा निर्दिष्ट किया गया था; ज़ेड/आर्किटेक्चर ने अतिरिक्त प्रारूप जोड़े।
मैक्रोज़ और सशर्त असेंबली
बेसिक असेम्बलर लैंग्वेज मैक्रोज़ का समर्थन नहीं करती. बाद के असेंबलर संस्करण प्रोग्रामर को निर्देशों को मैक्रोज़ में एक साथ समूहित करने और उन्हें एक लाइब्रेरी में जोड़ने की अनुमति देते हैं, जिसे बाद में अन्य कार्यक्रमों में लागू किया जा सकता है, सामान्यतः सी और संबंधित लैंग्वेज में प्रीप्रोसेसर सुविधाओं जैसे मापदंडों के साथ। मैक्रोज़ में सशर्त असेंबलर निर्देश सम्मिलित हो सकते हैं, जैसे कि AIF
(एक 'यदि' निर्माण), जिसका उपयोग चुने हुए मापदंडों के अनुसार अलग-अलग कोड उत्पन्न करने के लिए किया जाता है। यह इस असेंबलर की स्थूल सुविधा को बहुत शक्तिशाली बनाता है। जबकि C में मल्टीलाइन मैक्रोज़ एक अपवाद हैं, असेंबलर में मैक्रो परिभाषाएँ आसानी से सैकड़ों पंक्तियाँ हो सकती हैं।
ऑपरेटिंग सिस्टम मैक्रोज़
अधिकांश प्रोग्रामों को ऑपरेटिंग सिस्टम से सेवाओं की आवश्यकता होगी, और OS उन सेवाओं के अनुरोध के लिए मानक मैक्रोज़ प्रदान करता है। ये यूनिक्स सिस्टम कॉल के अनुरूप हैं। उदाहरण के लिए, एमवीएस (बाद में z/OS) में, स्टोरेज (OBTAIN पैरामीटर के साथ) गतिशील रूप से मेमोरी के एक ब्लॉक को आवंटित करता है, और GET एक फ़ाइल से अगले तार्किक रिकॉर्ड को पुनः प्राप्त करता है।
ये मैक्रोज़ ऑपरेटिंग सिस्टम पर निर्भर हैं; कई उच्च स्तरीय लैंग्वेज के विपरीत, आईबीएम मेनफ्रेम असेंबली भाषाएं मेमोरी आवंटित करने, I/O संचालन करने आदि के लिए ऑपरेटिंग-सिस्टम-स्वतंत्र स्टेटमेंट या लाइब्रेरी प्रदान नहीं करती हैं, और विभिन्न IBM मेनफ़्रेम ऑपरेटिंग सिस्टम सिस्टम सेवा स्तर पर संगत नहीं हैं। उदाहरण के लिए, अनुक्रमिक फ़ाइल लिखने को z/OS और z/VSE में अलग-अलग तरीके से कोड किया जाएगा।
उदाहरण
निम्नलिखित अंश दिखाता है कि "If SEX = 'M' है, तो मेल में 1 जोड़ें; अन्यथा, फीमेल में 1 जोड़ें" असेंबलर में कैसे निष्पादित किया जाएगा।
CLI SEX,C'M' Male?
BNE IS_FEM If not, branch around
L 7,MALES Load current value of MALES into register 7
LA 7,1(7) add 1
ST 7,MALES store back the result
B GO_ON Finished with this portion
IS_FEM EQU * A label
L 7,FEMALES Load current value in FEMALES into register 7
LA 7,1(7) add 1
ST 7,FEMALES store back the result
GO_ON EQU * - rest of program -
*
MALES DC F'0' Counter for MALES (initially=0)
FEMALES DC F'0' Counter for FEMALES (initially=0)
निम्नलिखित सर्वव्यापी हैलो वर्ल्ड प्रोग्राम है, और आईबीएम ऑपरेटिंग सिस्टम जैसे OS/VS1 या MVS के तहत निष्पादित करते हुए, ऑपरेटर के कंसोल पर 'हैलो वर्ल्ड' शब्द प्रदर्शित करेगा:
HELLO CSECT The name of this program is 'HELLO'
* Register 15 points here on entry from OPSYS or caller.
STM 14,12,12(13) Save registers 14,15, and 0 thru 12 in caller's Save area
LR 12,15 Set up base register with program's entry point address
USING HELLO,12 Tell assembler which register we are using for pgm. base
LA 15,SAVE Now Point at our own save area
ST 15,8(13) Set forward chain
ST 13,4(15) Set back chain
LR 13,15 Set R13 to address of new save area
* -end of housekeeping (similar for most programs) -
WTO 'Hello World' Write To Operator (Operating System macro)
*
L 13,4(13) restore address to caller-provided save area
XC 8(4,13),8(13) Clear forward chain
LM 14,12,12(13) Restore registers as on entry
DROP 12 The opposite of 'USING'
SR 15,15 Set register 15 to 0 so that the return code (R15) is Zero
BR 14 Return to caller
*
SAVE DS 18F Define 18 fullwords to save calling program registers
END HELLO This is the end of the program
WTO
एक असेंबलर मैक्रो है जो एक ऑपरेटिंग सिस्टम कॉल उत्पन्न करता है। रजिस्टरों को सहेजने और बाद में पुनर्स्थापित करने और वापस करने के कारण, यह छोटा प्रोग्राम ऑपरेटिंग सिस्टम कार्य नियंत्रण लैंग्वेज (जेसीएल) द्वारा सीधे लागू बैच प्रोग्राम के रूप में प्रयोग योग्य है:
// EXEC PGM=HELLO
या, वैकल्पिक रूप से, इसे ऐसे प्रोग्राम से सबरूटीन के रूप में कॉल किया जा सकता है:
CALL 'HELLO'
संस्करण
आईबीएम सिस्टम/360 मॉडल 20 के लिए असेंबलरों के अपवाद के साथ, आईबीएम असेंबलर काफी हद तक ऊपर की ओर संगत थे। अंतर मुख्यतः अनुमत अभिव्यक्ति की जटिलता और मैक्रो प्रोसेसिंग में थे। OS/360 असेम्बलर्स को मूल रूप से उनकी मेमोरी आवश्यकताओं के अनुसार नामित किया गया था।
7090/7094 सपोर्ट पैकेज असेंबलर
यह क्रॉस-असेंबलर IBM 7090 सिस्टम पर चलता है और इसका उपयोग तब किया गया था जब सिस्टम/360 विकास में था।[3][4]
बेसिक प्रोग्रामिंग सपोर्ट असेंबलर
बीपीएस के लिए असेंबलर ही सच्चा "बेसिक असेंबलर" है। इसे कार्डों से लोड करने का अभिप्राय था और यह 8 केबी सिस्टम/360 (मॉडल 20 को छोड़कर) पर चलेगा। इसमें मैक्रो निर्देशों या विस्तारित निमोनिक्स के लिए कोई समर्थन नहीं है (जैसे कि शाखा कोड 2 के स्थान पर बीएच, यदि स्थिति कोड 2 एक उच्च तुलना इंगित करता है)। यह केवल एक नियंत्रण अनुभाग को इकट्ठा कर सकता है और डमी अनुभागों (संरचना परिभाषाओं) की अनुमति नहीं देता है। कोष्ठक में अभिव्यक्ति की अनुमति नहीं है और अभिव्यक्ति केवल '+', '-' और '*' ऑपरेटरों के साथ तीन शब्दों तक सीमित है।[3]
बेसिक ऑपरेटिंग सिस्टम असेंबलर
बेसिक ऑपरेटिंग सिस्टम के दो असेंबलर वर्जन हैं। दोनों को 16 KB मेमोरी की आवश्यकता होती है, एक टेप रेजिडेंट और दूसरी डिस्क।[5]: pp.7–8
असेम्बलर डी
असेंबलर डी, 16 KB की मेमोरी साइज वाली मशीनों के लिए DOS/360 और उत्तराधिकारी|DOS/360 असेंबलर था। यह दो संस्करणों में आया: न्यूनतम 16 KB मेमोरी वाली मशीनों के लिए 10 KB संस्करण, और 24 KB वाली मशीनों के लिए 14 KB संस्करण। 64 KB या अधिक वाली DOS मशीनों के लिए एक F-लेवल असेंबलर भी उपलब्ध था। डी असेंबलर्स ने उच्च संस्करणों की लगभग सभी सुविधाएँ पेश कीं।[6]: p.7
असेंबलर ई और F
असेंबलर ई को न्यूनतम 32 केबी मुख्य स्टोरेज के साथ OS/360 सिस्टम पर चलने के लिए डिज़ाइन किया गया था, जबकि असेंबलर को 15 केबी की आवश्यकता होती है।[7]: p.2 असेंबलर F 64 KB मेमोरी वाले सिस्टम पर DOS/360 या OS/360 के तहत चल सकता है, असेंबलर को 44 KB की आवश्यकता होती है।[8][9][10] ये असेंबलर OS/360 का एक मानक भाग हैं; जो संस्करण तैयार किया गया था वह सिस्टम जेनरेशन (OS)OS) (SYSGEN) में निर्दिष्ट किया गया था।
मॉडल 44 प्रोग्रामिंग सिस्टम असेंबलर
"कुछ अपवादों के साथ, आईबीएम सिस्टम/360 मॉडल 44 प्रोग्रामिंग सिस्टम असेंबलर लैंग्वेज आईबीएम सिस्टम/360 प्रोग्रामिंग सपोर्ट में उपलब्ध लैंग्वेज का एक चयनित उपसमूह है।" सबसे महत्वपूर्ण बात यह है कि मॉडल 44 असेंबलर में मैक्रोज़ और निरंतरता विवरणों के लिए समर्थन का अभाव था। दूसरी ओर इसमें कई ऐसी विशेषताएं थीं जो अन्य सिस्टम/360 असेंबलरों में नहीं पाई गईं - विशेष रूप से कार्ड छवि स्रोत डेटासेट को अपडेट करने के निर्देश, जिसे सामान्य नाम दिया गया, और SETA
असेंबलर वेरिएबल्स की अंतर्निहित परिभाषा।[11]
असेम्बलर G
"असेम्बलर G" वाटरलू विश्वविद्यालय द्वारा 1970 के दशक में असेंबलर F में किए गए संशोधनों का एक सेट है (असेम्बलर F ओपन सोर्स था/है)। संवर्द्धन ज्यादातर इनपुट/आउटपुट के बेहतर संचालन और बेहतर बफ़रिंग में हैं जो असेंबली को काफी तेज़ कर देते हैं।[12] "असेंबलर G" कभी भी आईबीएम का उत्पाद नहीं था।
असेम्बलर H
असेंबलर H OS/360 और उसके उत्तराधिकारियों पर चलता है; यह असेंबलर F की तुलना में तेज़ और अधिक शक्तिशाली था, लेकिन मैक्रो लैंग्वेज पूरी तरह से संगत नहीं थी।
असेंबलर H संस्करण 2 की घोषणा 1981 में की गई थी और इसमें एक्सटेंडेड आर्किटेक्चर (XA) के लिए समर्थन सम्मिलित है,[13]: p.3–28 जिसमें AMODE और RMODE निर्देश सम्मिलित हैं। उच्च स्तरीय असेंबलर द्वारा.[14]
असेम्बलर XF
असेंबलर एक्सएफ, असेंबलर F का अपग्रेड है जिसमें नए सिस्टम/370 आर्किटेक्चर निर्देश सम्मिलित हैं। यह संस्करण OS/VS और DOS/VS सिस्टम के लिए एक सामान्य असेंबलर प्रदान करता है। अन्य परिवर्तनों में अभिव्यक्ति और मैक्रो प्रोसेसिंग पर प्रतिबंधों में ढील देना सम्मिलित है। असेंबलर XF को न्यूनतम 64 KB (वर्चुअल) विभाजन/क्षेत्र आकार की आवश्यकता होती है। अनुशंसित आकार 128 KB है.[15]: p.73
हाई लेवल असेंबलर
हाई लेवल असेंबलर या HLASM को जून 1992 में आईबीएम के असेंबलर H संस्करण 2 के स्थान पर जारी किया गया था।[16][17] यह सिस्टम/370 और सिस्टम/390 के लिए डिफ़ॉल्ट अनुवादक था, और MVS, VSE और VM ऑपरेटिंग सिस्टम का समर्थन करता था। 2023 तक यह अपने z/OS, z/VSE, z/VM और z/TPF ऑपरेटिंग सिस्टम के लिए z/आर्किटेक्चर मेनफ्रेम कंप्यूटर पर IBM की वर्तमान असेंबलर प्रोग्रामिंग लैंग्वेज है। रिलीज 6 और बाद में लिनक्स पर भी चलता है, और ईएलएफ या जीओएफएफ ऑब्जेक्ट फ़ाइलें उत्पन्न करता है (इस वातावरण को कभी-कभी आईबीएम Z पर लिनक्स के रूप में संदर्भित किया जाता है)। आईबीएम में काम करते समय, जॉन रॉबर्ट एहरमैन ने HLASM[lower-alpha 4] का निर्माण किया[19] और वह इसके प्रमुख डेवलपर थे और उन्हें "उच्च स्तरीय असेंबलर का जनक" माना जाता है।[20]
नाम के स्थान पर, HLASM में सामान्यतः उच्च-स्तरीय असेंबलर से जुड़ी कई सुविधाएं नहीं होती हैं। यह नाम अतिरिक्त मैक्रो लैंग्वेज क्षमताओं से आ सकता है, जैसे उपयोगकर्ता-परिभाषित फ़ंक्शन लिखने की क्षमता। असेंबलर अधिकतर असेंबलर H और असेंबलर (XF) के समान है, जिसमें एसएलएसी (स्टैनफोर्ड लीनियर एक्सेलेरेटर) संशोधन सम्मिलित हैं। जोड़ी गई सुविधाओं में स्थान काउंटर, डिपेंडेंट[lower-alpha 5] और लेबल[lower-alpha 6] USING स्टेटमेंट के लिए CSECT
/DSECT
का संकेत, वर्तमान में सक्रिय USING स्टेटमेंट की एक सूची, क्रॉस-रेफरेंस में एक वेरिएबल पढ़ा या लिखा गया है या नहीं, इसका संकेत दिया गया। और मिश्रित-केस प्रतीक नामों की अनुमति दे रहा है।[21] RSECT
निर्देश (रीड-ओनली कंट्रोल सेक्शन) असेंबलर को प्रति-सेक्शन के आधार पर पुनर्प्रवेश की जांच करने की अनुमति देता है। RSECT
को पहले "असेम्बलर H में अप्रलेखित और असंगत रूप से लागू किया गया था।"[22]: p.43
हाई लेवल असेंबलर टूलकिट
हाई लेवल असेंबलर टूलकिट हाई लेवल असेंबलर के लिए एक अलग कीमत वाली संगत है। टूलकिट में सम्मिलित हैं:[23]
- संरचित प्रोग्रामिंग मैक्रो (कंप्यूटर विज्ञान) का एक सेट -
- यदि/अन्यथा/समाप्ति
- करें/समाप्त करें
- STRTSRCH/ORELSE/ENDLOOP/ENDSRCH
- कैसेंट्री/केस/एंडकेस
- चुनें/कब/अन्यथा/अंत करें।
- अलग करनेवाला
- एक प्रोग्राम अंडरस्टैंडिंग टूल (रीइंजीनियरिंग (सॉफ्टवेयर)|री-इंजीनियरिंग सहायता)।
- एक स्रोत एक्सआरईएफ उपयोगिता (क्रॉस-रेफरेंस सुविधा)।
- इंटरएक्टिव डिबग सुविधा।
- उन्नत सुपरसी (स्रोत तुलना उपकरण)।
विशेषीकृत संस्करण
आईबीएम सिस्टम/360 मॉडल 44 पीएस असेंबलर
आईबीएम सिस्टम/360 मॉडल 44 प्रोग्रामिंग सिस्टम असेंबलर एक ऐसी लैंग्वेज को संसाधित करता है जो OS/360 और DOS/360 असेंबलर लैंग्वेज का एक चयनित उपसमूह है। इसमें स्टोरेज-टू-स्टोरेज (एसएस) निर्देशों या बाइनरी में कनवर्ट करने के लिए कोई समर्थन नहीं है (CVB
), दशमलव में कनवर्ट करें (CVD
), सीधे पढ़ें (RDD
) और सीधे लिखें (WRD
) निर्देश।[24] इसमें मॉडल 44 के लिए अद्वितीय चार निर्देश सम्मिलित हैं: प्राथमिकता मास्क बदलें (CHPM
), लोड पीएसडब्ल्यू स्पेशल (LPSX
), डायरेक्ट वर्ड पढ़ें (RDDW
), और डायरेक्ट वर्ड लिखें (WRDW
). इसमें स्रोत प्रोग्राम को अद्यतन करने के निर्देश भी सम्मिलित हैं, जो अन्य प्रणालियों में उपयोगिता कार्यक्रमों द्वारा किया जाने वाला कार्य है (SKPTO
, REWND
, NUM
, OMIT
और ENDUP
). यह सामान्य और अंतर्निहित रूप से परिभाषित नाम प्रदान करता है &SETA
प्रतीक, लेकिन कुछ प्रतिबंध भी हैं।[24]: pp.53, 73
आईबीएम सिस्टम/360 टीएसएस असेंबलर
TSS/360|सिस्टम/360 मॉडल 67 टाइम शेयरिंग सिस्टम के लिए असेंबलर में अद्वितीय TSS सुविधाओं का समर्थन करने के निर्देशों में कई अंतर हैं। PSECT
ई> निर्देश एक प्रोटोटाइप नियंत्रण अनुभाग उत्पन्न करता है जिसमें प्रोग्राम द्वारा उपयोग किए जाने वाले स्थानांतरण योग्य पता स्थिरांक और परिवर्तनीय डेटा सम्मिलित होता है।[25]: p.143
गैर-आईबीएम असेंबलर
विशेष वातावरण के लिए कई आईबीएम-संगत असेंबलर उपस्थित हैं।[26]
- यूनिसिस की यूनिवैक सीरीज 90|यूनिवैक 90/60, 90/70 और 90/80 सीरीज को आईबीएम-फॉर्मेट असेंबलर को स्वीकार करने के लिए डिजाइन किया गया था, क्योंकि मशीन श्रृंखला एस/360 और एस/370 के समान थी।
- फुजित्सु बीएस2000 श्रृंखला को भी यूनिवैक के समान संसाधन से 370 वर्कलाइक के रूप में बनाया गया था, और अभी भी यूरोप के कुछ हिस्सों में उपयोग में है।[27]
- डिग्नस एलएलसी सिस्टम्स/एएसएम एक HLASM-संगत असेंबलर है जो मूल रूप से आईबीएम सिस्टम पर या क्रॉस-असेंबलर के रूप में चल सकता है।[28]
- डॉन हिगिंस द्वारा लिखित फ्रीवेयर पीसी/370 को बाद में माइक्रो फोकस इंटरनेशनल द्वारा खरीद लिया गया।
- z390 एक असेंबलर और सिस्टम 390 एमुलेटर है जो डॉन हिगिंस द्वारा लिखा गया है और इसे जावा (प्रोग्रामिंग लैंग्वेज) में प्रोग्राम किया गया है। यह ओपन सोर्स है और http://www.z390.org/ पर उपलब्ध है।
- पेन स्टेट यूनिवर्सिटी ने ASSIST (कंप्यूटिंग) नामक एक पैकेज लिखा, जिसमें एक सिस्टम 370 असेंबलर और दुभाषिया सम्मिलित है।
- टैचियन सॉफ्टवेयर एलएलसी टैचियन असेंबलर वर्कबेंच का विपणन करता है जो विंडोज, लिनक्स/x86, S/390 और zSeries, AIX और सोलारिस के लिए लिनक्स पर चलता है।[29]
- जीएनयू असेंबलर (गैस) आईबीएम Z पर लिनक्स के लिए जीएनयू कंपाइलर संग्रह (जीसीसी) का भाग है। OS/390 और आईबीएम Z पर लिनक्स इस असेंबलर में एक अद्वितीय सिंटैक्स है जो आईबीएम आर्किटेक्चर के लिए अन्य असेंबलरों के साथ असंगत है।
सामान्य ज्ञान
BAL, ब्रांच एंड लिंक w:nl:Instructieset van IBM 360 का प्रतीक भी है।[2]
यह भी देखें
- आईबीएम सिस्टम/360
- सहायता (कंप्यूटिंग)
- पीसी-आधारित आईबीएम-संगत मेनफ्रेम - संगत मशीनों या वर्चुअल मशीनों की सूची
- डिस्सेबलर - असेंबली की रिवर्स प्रक्रिया, मशीन कोड से असेंबली जैसे स्रोत का पुनर्निर्माण
टिप्पणियाँ
- ↑ Most uses of BALR have been replaced by
BASR
and similar instructions. - ↑ Many uses of
SVC
have been replaced by aPC
instruction. - ↑ VM repurposes
DIAG
as anHVC
instruction. - ↑ HLASM followed a SHARE requirement to incorporate Greg Mushial's enhancements[18] to Assembler H into the supported product.
- ↑ A dependent USING is one that specifies a relocatable expression instead of a list of registers:
USING IHADCB,SYSPRINT ... TM DCBOPTCD,DCBOPTC Test OPTCD in SYSPRINT ...
- ↑ A labelled USING is one that only affects instructions that explicitly refer to it by qualifying an expression with a label:
LA R4,SYSIN LA R5,SYSPRINT IN USING IHADCB,R4 OUT USING IHADCB,R5 ... TM IN.DCBOFLGS,DCBOFTM Test OFLGS in SYSIN ... TM OUT.DCBOPTCD,DCBOPTC Test OPTCD in SYSPRINT ...
संदर्भ
- ↑ IBM System/360 Principles of Operation (PDF). A22-6821-0. Retrieved Dec 6, 2018.
{{cite book}}
:|work=
ignored (help) - ↑ 2.0 2.1 "एचएलएएसएम - सभी ऑपकोड, विस्तारित निमोनिक्स और फ़ंक्शन कोड की सूची, निमोनिक द्वारा क्रमबद्ध". Retrieved January 14, 2013.
- ↑ 3.0 3.1 IBM System/360 Basic Programming Support Basic Assembler Language (PDF). February 1965. C20-6503-0. Retrieved April 5, 2022.
{{cite book}}
:|work=
ignored (help) - ↑ IBM 7090/7094 Support Package for IBM System/360 (PDF). November 1964. C28-6501-2. Retrieved April 5, 2022.
{{cite book}}
:|work=
ignored (help) - ↑ IBM System/360 Basic Operating System Language Specifications Assembler (16K Disk/Tape) (PDF). December 1965. C24-3414-1. Retrieved April 5, 2022.
{{cite book}}
:|work=
ignored (help) - ↑ IBM Corporation (1970). IBM System/360 Disk and Tape Operating Systems Assembler Language (PDF).
- ↑ IBM Corporation (1966). IBM System/360 Operating System Assembler (32K) Program Logic Manual (PDF).
- ↑ IBM Corporation (1968). IBM System/360 Disk Operating System Assembler(F) Program Logic (PDF).
- ↑ IBM Corporation (1971). IBM System/360 Assembler(F) Program Logic (PDF).
- ↑ IBM Corporation (1974). आईबीएम ओएस असेंबलर भाषा (PDF).
- ↑ IBM Corporation (1966). IBM System/360 Model 44 Programming System Assembler Language (PDF). p. 73. Retrieved July 2, 2019.
- ↑ Stanford Linear Accelerator Center. "GENERALIZED IBM SYSTEM 360 SOFTWARE MEASUREMENT (SLAC-PUB-715)" (PDF). Retrieved October 8, 2012.
- ↑ IBM Corporation (1984). MVS/Extended Architecture Conversion Notebook (PDF).
- ↑ IBM Corporation (20 December 1996). "5668-962 IBM Assembler H Version 2 Release 1.0". Retrieved October 8, 2012.
- ↑ IBM Corporation (1973). OS/VS Assembler Programmer's Guide (PDF).
- ↑ IBM Corporation. "आईबीएम हाई लेवल असेंबलर और टूलकिट फ़ीचर - रिलीज़ इतिहास". Retrieved October 21, 2012.
- ↑ IBM Corporation (5 May 1992). "Announcement Letter 292-244: IBM HIGH LEVEL ASSEMBLER/MVS & VM & VSE". Retrieved October 21, 2012.
- ↑ Greg Mushial (July 20, 1983), "Module 24: SLAC Enhancements to and Beautifications of the IBM H-Level Assembler for Version 2.8", SLAC VM NOTEBOOK, Stanford Linear Accelerator Center
- ↑ IBM Corporation (2008). zSeries उपयोगकर्ता गाइड पर लिनक्स के लिए उच्च स्तरीय असेंबलर (PDF).
- ↑ "जॉन आर. एहरमन संग्रह के लिए गाइड". Online Archive of California. X5621.2010. Archived from the original on 2022-10-15. Retrieved 2022-10-15. [1]
- ↑ "IBM HIGH LEVEL ASSEMBLER/MVS & VM & VSE". Announcement letters. IBM Corporation. May 5, 1992. 292-244. Retrieved October 8, 2012.
- ↑ IBM Corporation (1995). IBM High Level Assembler for MVS & VM & VSE Release 2 Presentation Guide (PDF). Archived from the original (PDF) on 2016-01-23.
- ↑ IBM Corporation. "टूलकिट फ़ीचर घटक". Retrieved October 21, 2012.
- ↑ 24.0 24.1 IBM Corporation (1966). IBM System/360 Model 44 Programming System Assembler Language (PDF).
- ↑ IBM Corporation (1976). आईबीएम टाइम शेयरिंग सिस्टम असेंबलर प्रोग्रामर गाइड (PDF).
- ↑ Alcock, David. "Dave's z/Architecture Assembler FAQ". Planet MVS. Retrieved December 15, 2012.
- ↑ Fujitsu ASSEMH manuals available from http://manuals.ts.fujitsu.com/index.php?id=1-2-2926-15435 (Retrieved 2016-02-27)
- ↑ Dignus, LLC. "Systems/ASM". Retrieved December 15, 2012.
- ↑ टैचयोन सॉफ्टवेयर LLC. "टैचयोन सॉफ्टवेयर". Retrieved December 15, 2012.
- Additional references
- Rudd, Anthony. An Illustrated Guide for z/Architecture Assembler Programmers. Create Space (2012).
बाहरी संबंध
- IBM High Level Assembler manual
- A Programmer's Introduction to IBM System/360 Assembler Language (Student Text)
- High Level Assembler for z/OS & z/VM & z/VSE Language Reference
- The Punctilious Programmer: IBM Mainframe Assembler
- Basic IBM Mainframe Assembly Language Programming
- OS/390 Assembler Programming Introduction (archived)
- Web enabled IBM Assembler F compiler for small experiments
- ASSIST – Assembler System for Student Instruction & Systems Teaching