बेसिक असेंबली लैंग्वेज: Difference between revisions

From Vigyanwiki
No edit summary
 
(7 intermediate revisions by 4 users not shown)
Line 2: Line 2:


{{Infobox programming language
{{Infobox programming language
| name                  = Basic Assembly Language
| name                  = नेटिव असेंबली लैंग्वेज
| logo                  =  
| logo                  =  
| paradigm              = [[assembly language]]
| paradigm              = [[असेंबली लैंग्वेज]]
| year                  = 1964
| year                  = 1964
| designer              =  
| designer              =  
| developer              = [[IBM]]
| 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      = [[IBM Basic Programming Support]], [[BOS/360|Basic Operating System/360]]
| operating_system      = [[आईबीएम बेसिक प्रोग्रामिंग सपोर्ट]], [[बीओएस/360|बेसिक ऑपरेटिंग सिस्टम/360]]
| license                = free
| license                = free
| website                =  
| website                =  
Line 20: Line 20:


{{Infobox programming language
{{Infobox programming language
| name                  = High Level Assembler
| name                  = हाई लेवल असेम्बलर
| logo                  =  
| logo                  =  
| paradigm              = [[assembly language]]
| paradigm              = [[असेंबली लैंग्वेज]]
| year                  = 1992
| year                  = 1992
| designer              =  
| designer              =  
| developer              = [[IBM]]
| developer              = [[आईबीएम]]
| latest_release_version = Version 1 Release 6
| latest_release_version = संस्करण 1 रिलीज 6
| latest_release_date    =  
| latest_release_date    =  
| implementations        = High Level Assembler
| implementations        = हाई लेवल असेम्बलर
| typing                =  
| typing                =  
| influenced_by          =  
| influenced_by          =  
| influenced            =  
| influenced            =  
| operating_system = IBM [[MVS/ESA]] and successors, [[VM/ESA]] and successors, [[VSE/ESA]] and successors
| operating_system = आईबीएम [[एमवीएस/ईएसए]] और सक्सेसर, [[वीएम/ईएसए]] और सक्सेसर, [[वीएसई/ईएसए]] और सक्सेसर
| license                = proprietary
| 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
}}
}}
<!-- Check minimum OS levels in announcement letter -->
 
'''बेसिक असेंबली लैंग्वेज (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 शब्द का उपयोग किया, ठीक उसी तरह जैसे उन्होंने सामान्य उत्पादों को संदर्भित करने के लिए कोडक और ''ज़ेरॉक्स'' जैसे ट्रेडमार्क शब्दों का उपयोग किया; यह प्रथा ख़त्म हो गई है.
कुछ लोगों ने अन्य असेंबलर लैंग्वेज को संदर्भित करने के लिए BAL शब्द का उपयोग किया, ठीक उसी तरह जैसे उन्होंने सामान्य उत्पादों को संदर्भित करने के लिए कोडक और ''ज़ेरॉक्स'' जैसे ट्रेडमार्क शब्दों का उपयोग किया; यह प्रथा ख़त्म हो गई है.


[[IBM Z]] के माध्यम से सिस्टम/360 के लिए अन्य ऑपरेटिंग सिस्टम पर असेंबलर, [[स्पेरी कॉर्पोरेशन]] द्वारा बनाए गए UNIVAC सीरीज 90 मेनफ्रेम के लिए, और वर्तमान में फुजित्सु द्वारा बनाए गए [[BS2000]] मेनफ्रेम के लिए, इसके सिंटैक्स को विरासत में मिला और बढ़ाया। नवीनतम व्युत्पन्न भाषा को IBM हाई-लेवल असेंबलर (HLASM) के रूप में जाना जाता है। असेंबलरों के इस परिवार का उपयोग करने वाले प्रोग्रामर उन्हें ALC, (असेंबली भाषा कोडिंग के लिए), या बस "असेंबलर" के रूप में भी संदर्भित करते हैं।
[[IBM Z]] के माध्यम से सिस्टम/360 के लिए अन्य ऑपरेटिंग सिस्टम पर असेंबलर, [[स्पेरी कॉर्पोरेशन]] द्वारा बनाए गए UNIVAC सीरीज 90 मेनफ्रेम के लिए, और वर्तमान में फुजित्सु द्वारा बनाए गए [[BS2000]] मेनफ्रेम के लिए, इसके सिंटैक्स को विरासत में मिला और बढ़ाया। नवीनतम व्युत्पन्न लैंग्वेज को IBM हाई-लेवल असेंबलर (HLASM) के रूप में जाना जाता है। असेंबलरों के इस समहू का उपयोग करने वाले प्रोग्रामर उन्हें ALC, (असेंबली लैंग्वेज कोडिंग के लिए), या बस "असेंबलर" के रूप में भी संदर्भित करते हैं।


==सामान्य विशेषताएँ==
==सामान्य विशेषताएँ==
चूँकि यह एक असेंबली भाषा है, BAL IBM मेनफ्रेम आर्किटेक्चर के मूल निर्देश सेट का उपयोग करता है, जिसमें System/360, System/370, System/370-XA, ESA/370, ESA/390, और z/आर्किटेक्चर शामिल हैं।
चूँकि यह एक असेंबली लैंग्वेज है, BAL IBM मेनफ्रेम आर्किटेक्चर के मूल निर्देश सेट का उपयोग करता है, जिसमें System/360, System/370, System/370-XA, ESA/370, ESA/390, और z/आर्किटेक्चर सम्मिलित हैं।


मशीन निर्देशों की सरलता का अर्थ है कि असेंबलर में लिखे गए प्रोग्राम का स्रोत कोड आमतौर पर [[COBOL]] या [[फोरट्रान]] के समकक्ष प्रोग्राम की तुलना में अधिक लंबा होगा। अतीत में, हाथ से कोडित असेंबलर कार्यक्रमों की गति को अक्सर इस कमी को पूरा करने के लिए महसूस किया जाता था, लेकिन ऑप्टिमाइज़िंग कंपाइलर, मेनफ्रेम के लिए C और अन्य अग्रिमों के आगमन के साथ, असेंबलर ने अपनी बहुत सारी अपील खो दी है। हालाँकि, आईबीएम असेंबलर को अपग्रेड करना जारी रखता है, और इसका उपयोग अभी भी तब किया जाता है जब गति या बहुत अच्छे नियंत्रण की आवश्यकता सर्वोपरि होती है। हालाँकि, BAL के सभी आईबीएम उत्तराधिकारियों में एक परिष्कृत मैक्रो सुविधा शामिल है जो बहुत अधिक कॉम्पैक्ट स्रोत कोड लिखने की अनुमति देती है।
मशीन निर्देशों की सरलता का अर्थ है कि असेंबलर में लिखे गए प्रोग्राम का स्रोत कोड सामान्यतः [[COBOL]] या [[फोरट्रान]] के समकक्ष प्रोग्राम की तुलना में अधिक लंबा होगा। अतीत में, हाथ से कोडित असेंबलर कार्यक्रमों की गति को प्रायः इस कमी को पूरा करने के लिए महसूस किया जाता था, लेकिन ऑप्टिमाइज़िंग कंपाइलर, मेनफ्रेम के लिए C और अन्य अग्रिमों के आगमन के साथ, असेंबलर ने अपनी बहुत सारी अपील खो दी है। हालाँकि, आईबीएम असेंबलर को अपग्रेड करना जारी रखता है, और इसका उपयोग अभी भी तब किया जाता है जब गति या बहुत अच्छे नियंत्रण की आवश्यकता सर्वोपरि होती है। हालाँकि, BAL के सभी आईबीएम उत्तराधिकारियों में एक परिष्कृत मैक्रो सुविधा सम्मिलित है जो बहुत अधिक कॉम्पैक्ट स्रोत कोड लिखने की अनुमति देती है।


असेंबलर का उपयोग करने का दूसरा कारण यह है कि सभी ऑपरेटिंग सिस्टम फ़ंक्शंस को उच्च-स्तरीय भाषाओं में एक्सेस नहीं किया जा सकता है। मेनफ्रेम ऑपरेटिंग सिस्टम के एप्लिकेशन प्रोग्राम इंटरफ़ेस को असेंबली भाषा "मैक्रो" निर्देशों के एक सेट के रूप में परिभाषित किया गया है, जो आम तौर पर सुपरवाइज़र कॉल (एसवीसी) को आमंत्रित करता है [उदाहरण के लिए, z/OS पर] या ऑपरेटिंग सिस्टम रूटीन को लागू करने के लिए डायग्नोज़ (DIAG) [उदाहरण के लिए, z/VM] निर्देश। असेंबलर सबरूटीन्स के उपयोग द्वारा उच्च-स्तरीय भाषाओं में लिखे गए प्रोग्रामों से ऑपरेटिंग सिस्टम सेवाओं का उपयोग करना संभव है।
असेंबलर का उपयोग करने का दूसरा कारण यह है कि सभी ऑपरेटिंग सिस्टम फ़ंक्शंस को उच्च-स्तरीय लैंग्वेज में एक्सेस नहीं किया जा सकता है। मेनफ्रेम ऑपरेटिंग सिस्टम के एप्लिकेशन प्रोग्राम इंटरफ़ेस को असेंबली लैंग्वेज "मैक्रो" निर्देशों के एक सेट के रूप में परिभाषित किया गया है, जो सामान्यतः सुपरवाइज़र कॉल (एसवीसी) को आमंत्रित करता है [उदाहरण के लिए, 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 असेंबली भाषा के उपयोग के दौरान कीपंच कार्ड और एक मुद्रित असेंबली सूची आम थी]]असेंबलर भाषा स्टेटमेंट का प्रारूप 80-कॉलम वाले पंच कार्ड के लेआउट को दर्शाता है, हालांकि क्रमिक संस्करणों ने अधिकांश प्रतिबंधों में ढील दी है।
[[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, 2, 3, या शायद ही कभी 4 अक्षर बन जाता है। ऑपरेशन कोड को आठ वर्णों तक, फिर बाद में प्रभावी रूप से असीमित लंबाई तक बढ़ाने के लिए बढ़ाया गया था।
* ऑपरेशन कोड या निमोनिक कॉलम 1 के दाईं ओर किसी भी कॉलम में प्रारम्भ हो सकता है, जिसे स्टेटमेंट लेबल से एक रिक्त स्थान से अलग किया गया है। ऑपरेशन कोड केवल एक मशीन निर्देश होगा (मैक्रोज़ उपलब्ध नहीं थे), जिससे यह सामान्यतः 1, 2, 3, या शायद ही कभी 4 अक्षर बन जाता है। ऑपरेशन कोड को आठ वर्णों तक, फिर बाद में प्रभावी रूप से असीमित लंबाई तक बढ़ाने के लिए बढ़ाया गया था।
* ऑपरेंड फ़ील्ड ऑपरेशन कोड के दाईं ओर किसी भी कॉलम में शुरू हो सकता है, जो ऑपरेशन कोड से कम से कम एक रिक्त स्थान से अलग होता है। वर्ण स्थिरांक को छोड़कर ऑपरेंड में रिक्त स्थान अमान्य हैं। एक या अधिक ऑपरेंड से युक्त ऑपरेंड फ़ील्ड, ऑपरेशन कोड के आधार पर वैकल्पिक है।
* ऑपरेंड फ़ील्ड ऑपरेशन कोड के दाईं ओर किसी भी कॉलम में प्रारम्भ हो सकता है, जो ऑपरेशन कोड से कम से कम एक रिक्त स्थान से अलग होता है। वर्ण स्थिरांक को छोड़कर ऑपरेंड में रिक्त स्थान अमान्य हैं। एक या अधिक ऑपरेंड से युक्त ऑपरेंड फ़ील्ड, ऑपरेशन कोड के आधार पर वैकल्पिक है।
* वैकल्पिक टिप्पणियाँ ऑपरेंड फ़ील्ड के दाईं ओर कम से कम एक रिक्त स्थान से अलग दिखाई दे सकती हैं।
* वैकल्पिक टिप्पणियाँ ऑपरेंड फ़ील्ड के दाईं ओर कम से कम एक रिक्त स्थान से अलग दिखाई दे सकती हैं।
*''बेसिक'' असेंबली लैंग्वेज स्टेटमेंट को जारी रखने की अनुमति नहीं देती है। असेंबलर के बाद के संस्करणों में जारी स्टेटमेंट के कॉलम 72 में किसी भी गैर-रिक्त वर्ण की उपस्थिति से निरंतरता का संकेत मिलता है। बेसिक असेंबली लैंग्वेज के लिए आवश्यक है कि कॉलम 72 खाली रहे।
*''बेसिक'' असेंबली लैंग्वेज स्टेटमेंट को जारी रखने की अनुमति नहीं देती है। असेंबलर के बाद के संस्करणों में जारी स्टेटमेंट के कॉलम 72 में किसी भी गैर-रिक्त वर्ण की उपस्थिति से निरंतरता का संकेत मिलता है। बेसिक असेंबली लैंग्वेज के लिए आवश्यक है कि कॉलम 72 खाली रहे।
* एक पूर्ण-कार्ड टिप्पणी को कॉलम 1 में तारांकन चिह्न (*) द्वारा दर्शाया गया है।
* एक पूर्ण-कार्ड टिप्पणी को कॉलम 1 में तारांकन चिह्न (*) द्वारा दर्शाया गया है।
* कार्ड कॉलम 73-80, जिसे पहचान-अनुक्रम फ़ील्ड कहा जाता है, प्रोग्रामर द्वारा किसी भी उद्देश्य के लिए उपयोग किया जा सकता है, लेकिन आमतौर पर इसमें अव्यवस्थित कार्ड डेक का सहारा लेने के लिए अनुक्रम संख्याएं होती हैं।
* कार्ड कॉलम 73-80, जिसे पहचान-अनुक्रम फ़ील्ड कहा जाता है, प्रोग्रामर द्वारा किसी भी उद्देश्य के लिए उपयोग किया जा सकता है, लेकिन सामान्यतः इसमें अव्यवस्थित कार्ड डेक का सहारा लेने के लिए अनुक्रम संख्याएं होती हैं।


बेसिक असेंबली लैंग्वेज कॉलम 25 से शुरू होने वाले स्टेटमेंट के साथ एक वैकल्पिक स्टेटमेंट फॉर्मेट की भी अनुमति देती है, जिससे असेंबल किए गए निर्देश को कॉलम 1 से शुरू होने वाले उसी कार्ड में पंच किया जा सकता है। यह विकल्प असेंबलर के बाद के संस्करणों में जारी नहीं रखा गया था।
बेसिक असेंबली लैंग्वेज कॉलम 25 से प्रारम्भ होने वाले स्टेटमेंट के साथ एक वैकल्पिक स्टेटमेंट फॉर्मेट की भी अनुमति देती है, जिससे असेंबल किए गए निर्देश को कॉलम 1 से प्रारम्भ होने वाले उसी कार्ड में पंच किया जा सकता है। यह विकल्प असेंबलर के बाद के संस्करणों में जारी नहीं रखा गया था।


==निर्देशों के प्रकार==
==निर्देशों के प्रकार==
Line 69: Line 69:


===असेंबलर निर्देश===
===असेंबलर निर्देश===
असेंबलर निर्देश, जिन्हें कभी-कभी अन्य प्रणालियों पर निर्देश, छद्म संचालन या छद्मऑप्स भी कहा जाता है, असेंबलर से कोड जनरेशन प्रक्रिया के दौरान विभिन्न संचालन करने के लिए अनुरोध हैं। उदाहरण के लिए, <code>CSECT</code> का अर्थ है "यहां कोड का एक अनुभाग शुरू करें"; <code>DC</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 स्टेटमेंट के माध्यम से परिभाषित किए जाते हैं। यह असेंबलर भाषा प्रोग्राम की पठनीयता में सुधार करता है और रजिस्टर उपयोग का क्रॉस-रेफरेंस प्रदान करता है। इस प्रकार आमतौर पर आप एक असेंबलर प्रोग्राम में निम्नलिखित देख सकते हैं:
सामान्यतः स्वीकृत मानकों में, हालांकि किसी भी तरह से अनिवार्य नहीं है, इसमें निमोनिक्स के साथ सामान्य-उद्देश्य रजिस्टरों की पहचान सम्मिलित है। कुछ अन्य प्रणालियों, जैसे कि 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. ''फ्री ऑन-लाइन'' ''कंप्यूटिंग'' शब्दकोश पर सुपरज़ैप उपयोगिता के नाम को प्रेरित किया था।<!-- Couldn't use <code> within {{efn}}. -->
कॉल के लिए कुछ उल्लेखनीय अनुदेश निमोनिक्स <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 में मल्टीलाइन मैक्रोज़ एक अपवाद हैं, असेंबलर में मैक्रो परिभाषाएँ आसानी से सैकड़ों पंक्तियाँ हो सकती हैं।
बेसिक असेम्बलर लैंग्वेज मैक्रोज़ का समर्थन नहीं करती. बाद के असेंबलर संस्करण प्रोग्रामर को निर्देशों को मैक्रोज़ में एक साथ समूहित करने और उन्हें एक लाइब्रेरी में जोड़ने की अनुमति देते हैं, जिसे बाद में अन्य कार्यक्रमों में लागू किया जा सकता है, सामान्यतः सी और संबंधित लैंग्वेज में प्रीप्रोसेसर सुविधाओं जैसे मापदंडों के साथ। मैक्रोज़ में सशर्त असेंबलर निर्देश सम्मिलित हो सकते हैं, जैसे कि <code>AIF</code> (एक 'यदि' निर्माण), जिसका उपयोग चुने हुए मापदंडों के अनुसार अलग-अलग कोड उत्पन्न करने के लिए किया जाता है। यह इस असेंबलर की स्थूल सुविधा को बहुत शक्तिशाली बनाता है। जबकि C में मल्टीलाइन मैक्रोज़ एक अपवाद हैं, असेंबलर में मैक्रो परिभाषाएँ आसानी से सैकड़ों पंक्तियाँ हो सकती हैं।


===[[ऑपरेटिंग सिस्टम]] मैक्रोज़===
===[[ऑपरेटिंग सिस्टम]] मैक्रोज़===
अधिकांश प्रोग्रामों को ऑपरेटिंग सिस्टम से सेवाओं की आवश्यकता होगी, और OS उन सेवाओं के अनुरोध के लिए मानक मैक्रोज़ प्रदान करता है। ये [[यूनिक्स]] [[सिस्टम कॉल]] के अनुरूप हैं। उदाहरण के लिए, [[एमवीएस]] (बाद में z/OS) में, स्टोरेज (OBTAIN पैरामीटर के साथ) गतिशील रूप से मेमोरी के एक ब्लॉक को आवंटित करता है, और GET एक फ़ाइल से अगले तार्किक रिकॉर्ड को पुनः प्राप्त करता है।
अधिकांश प्रोग्रामों को ऑपरेटिंग सिस्टम से सेवाओं की आवश्यकता होगी, और OS उन सेवाओं के अनुरोध के लिए मानक मैक्रोज़ प्रदान करता है। ये [[यूनिक्स]] [[सिस्टम कॉल]] के अनुरूप हैं। उदाहरण के लिए, [[एमवीएस]] (बाद में z/OS) में, स्टोरेज (OBTAIN पैरामीटर के साथ) गतिशील रूप से मेमोरी के एक ब्लॉक को आवंटित करता है, और GET एक फ़ाइल से अगले तार्किक रिकॉर्ड को पुनः प्राप्त करता है।


ये मैक्रोज़ ऑपरेटिंग सिस्टम पर निर्भर हैं; कई उच्च स्तरीय भाषाओं के विपरीत, आईबीएम मेनफ्रेम असेंबली भाषाएं मेमोरी आवंटित करने, I/O संचालन करने आदि के लिए ऑपरेटिंग-सिस्टम-स्वतंत्र स्टेटमेंट या लाइब्रेरी प्रदान नहीं करती हैं, और विभिन्न IBM मेनफ़्रेम ऑपरेटिंग सिस्टम सिस्टम सेवा स्तर पर संगत नहीं हैं। उदाहरण के लिए, अनुक्रमिक फ़ाइल लिखने को z/OS और z/VSE में अलग-अलग तरीके से कोड किया जाएगा।
ये मैक्रोज़ ऑपरेटिंग सिस्टम पर निर्भर हैं; कई उच्च स्तरीय लैंग्वेज के विपरीत, आईबीएम मेनफ्रेम असेंबली भाषाएं मेमोरी आवंटित करने, I/O संचालन करने आदि के लिए ऑपरेटिंग-सिस्टम-स्वतंत्र स्टेटमेंट या लाइब्रेरी प्रदान नहीं करती हैं, और विभिन्न IBM मेनफ़्रेम ऑपरेटिंग सिस्टम सिस्टम सेवा स्तर पर संगत नहीं हैं। उदाहरण के लिए, अनुक्रमिक फ़ाइल लिखने को z/OS और z/VSE में अलग-अलग तरीके से कोड किया जाएगा।


==उदाहरण==
==उदाहरण==
निम्नलिखित अंश दिखाता है कि "If SEX = 'M' है, तो पुरुषों में 1 जोड़ें; अन्यथा, महिलाओं में 1 जोड़ें" असेंबलर में कैसे निष्पादित किया जाएगा।
निम्नलिखित अंश दिखाता है कि "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 केबी मुख्य स्टोरेज के साथ ओएस/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) (SYSGEN) में निर्दिष्ट किया गया था।
असेंबलर ई को न्यूनतम 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 प्रोग्रामिंग सपोर्ट में उपलब्ध भाषाओं का एक चयनित उपसमूह है।" सबसे महत्वपूर्ण बात यह है कि मॉडल 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>  
"कुछ अपवादों के साथ, आईबीएम सिस्टम/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>
 


असेंबलर 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 आर्किटेक्चर निर्देश शामिल हैं। यह संस्करण 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}}
असेंबलर एक्सएफ, असेंबलर 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 की वर्तमान असेंबलर प्रोग्रामिंग भाषा है। रिलीज 6 और बाद में [[लिनक्स]] पर भी चलता है, और ईएलएफ या जीओएफएफ ऑब्जेक्ट फ़ाइलें उत्पन्न करता है (इस वातावरण को कभी-कभी आईबीएम जेड पर लिनक्स के रूप में संदर्भित किया जाता है)। [[आईबीएम]] में काम करते समय, जॉन रॉबर्ट एहरमैन ने HLASM{{efn|HLASM followed a SHARE requirement to incorporate Greg Mushial's enhancements<ref>{{citation
हाई लेवल असेंबलर या 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>


<!--  1935-2018 https://web.archive.org/web/20221015170120/https://oac.cdlib.org/findaid/ark:/13030/c8xk8mnr/ https://web.archive.org/web/20221015172646/https://www.forevermissed.com/john-ehrman/about https://www.linkedin.com/in/john-ehrman-8794b26b -->
नाम के स्थान पर, HLASM में सामान्यतः उच्च-स्तरीय असेंबलर से जुड़ी कई सुविधाएं नहीं होती हैं। यह नाम अतिरिक्त मैक्रो लैंग्वेज क्षमताओं से आ सकता है, जैसे उपयोगकर्ता-परिभाषित फ़ंक्शन लिखने की क्षमता। असेंबलर अधिकतर असेंबलर H और असेंबलर (XF) के समान है, जिसमें एसएलएसी (स्टैनफोर्ड लीनियर एक्सेलेरेटर) संशोधन सम्मिलित हैं। जोड़ी गई सुविधाओं में स्थान काउंटर, डिपेंडेंट{{efn|A dependent USING is one that specifies a relocatable expression instead of a list of registers:
नाम के स्थान पर, HLASM में आमतौर पर उच्च-स्तरीय असेंबलर से जुड़ी कई सुविधाएं नहीं होती हैं। यह नाम अतिरिक्त मैक्रो भाषा क्षमताओं से आ सकता है, जैसे उपयोगकर्ता-परिभाषित फ़ंक्शन लिखने की क्षमता। असेंबलर अधिकतर असेंबलर H और असेंबलर (XF) के समान है, जिसमें एसएलएसी (स्टैनफोर्ड लीनियर एक्सेलेरेटर) संशोधन शामिल हैं। जोड़ी गई सुविधाओं में स्थान काउंटर, डिपेंडेंट{{efn|A dependent USING is one that specifies a relocatable expression instead of a list of registers:
<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> * [[संरचित प्रोग्रामिंग]] मैक्रो (कंप्यूटर विज्ञान) का एक सेट -
हाई लेवल असेंबलर टूलकिट हाई लेवल असेंबलर के लिए एक अलग कीमत वाली संगत है। टूलकिट में सम्मिलित हैं:<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 और डॉस/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 मॉडल 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> ई> निर्देश एक प्रोटोटाइप नियंत्रण अनुभाग उत्पन्न करता है जिसमें प्रोग्राम द्वारा उपयोग किए जाने वाले स्थानांतरण योग्य पता स्थिरांक और परिवर्तनीय डेटा शामिल होता है।<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}}
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>
विशेष वातावरण के लिए कई आईबीएम-संगत असेंबलर उपस्थित हैं।<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>
* [[जीएनयू असेंबलर]] (गैस) आईबीएम जेड पर लिनक्स के लिए [[जीएनयू कंपाइलर संग्रह]] (जीसीसी) का हिस्सा है। ओएस/390 और आईबीएम जेड पर लिनक्स। इस असेंबलर में एक अद्वितीय सिंटैक्स है जो आईबीएम आर्किटेक्चर के लिए अन्य असेंबलरों के साथ असंगत है।
* [[जीएनयू असेंबलर]] (गैस) आईबीएम 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: आईबीएम सॉफ्टवेयर|बेसिक असेंबली लैंग्वेज]] [[Category: असेंबली भाषाएँ]] [[Category: असेंबली भाषा सॉफ्टवेयर]] [[Category: आईबीएम सिस्टम/360 मेनफ्रेम लाइन|असेंबली भाषा बेसिक]]


[[Category: Machine Translated Page]]
[[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] निर्देश। असेंबलर सबरूटीन्स के उपयोग द्वारा उच्च-स्तरीय लैंग्वेज में लिखे गए प्रोग्रामों से ऑपरेटिंग सिस्टम सेवाओं का उपयोग करना संभव है।

असेंबलर स्टेटमेंट फॉर्मेट

1970 के दशक में आईबीएम 370 असेंबली लैंग्वेज के उपयोग के दौरान कीपंच कार्ड और एक मुद्रित असेंबली सूची आम थी

असेंबलर लैंग्वेज स्टेटमेंट का प्रारूप 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'

संस्करण

असेंबलर G के लिए पहचान पृष्ठ दिखाने वाला बैच जॉब प्रिंटआउट

आईबीएम सिस्टम/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
  • सहायता (कंप्यूटिंग)
  • पीसी-आधारित आईबीएम-संगत मेनफ्रेम - संगत मशीनों या वर्चुअल मशीनों की सूची
  • डिस्सेबलर - असेंबली की रिवर्स प्रक्रिया, मशीन कोड से असेंबली जैसे स्रोत का पुनर्निर्माण

टिप्पणियाँ

  1. Most uses of BALR have been replaced by BASR and similar instructions.
  2. Many uses of SVC have been replaced by a PC instruction.
  3. VM repurposes DIAG as an HVC instruction.
  4. HLASM followed a SHARE requirement to incorporate Greg Mushial's enhancements[18] to Assembler H into the supported product.
  5. 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
             ...
    
  6. 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
             ...
    


संदर्भ

  1. IBM System/360 Principles of Operation (PDF). A22-6821-0. Retrieved Dec 6, 2018. {{cite book}}: |work= ignored (help)
  2. 2.0 2.1 "एचएलएएसएम - सभी ऑपकोड, विस्तारित निमोनिक्स और फ़ंक्शन कोड की सूची, निमोनिक द्वारा क्रमबद्ध". Retrieved January 14, 2013.
  3. 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)
  4. IBM 7090/7094 Support Package for IBM System/360 (PDF). November 1964. C28-6501-2. Retrieved April 5, 2022. {{cite book}}: |work= ignored (help)
  5. 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)
  6. IBM Corporation (1970). IBM System/360 Disk and Tape Operating Systems Assembler Language (PDF).
  7. IBM Corporation (1966). IBM System/360 Operating System Assembler (32K) Program Logic Manual (PDF).
  8. IBM Corporation (1968). IBM System/360 Disk Operating System Assembler(F) Program Logic (PDF).
  9. IBM Corporation (1971). IBM System/360 Assembler(F) Program Logic (PDF).
  10. IBM Corporation (1974). आईबीएम ओएस असेंबलर भाषा (PDF).
  11. IBM Corporation (1966). IBM System/360 Model 44 Programming System Assembler Language (PDF). p. 73. Retrieved July 2, 2019.
  12. Stanford Linear Accelerator Center. "GENERALIZED IBM SYSTEM 360 SOFTWARE MEASUREMENT (SLAC-PUB-715)" (PDF). Retrieved October 8, 2012.
  13. IBM Corporation (1984). MVS/Extended Architecture Conversion Notebook (PDF).
  14. IBM Corporation (20 December 1996). "5668-962 IBM Assembler H Version 2 Release 1.0". Retrieved October 8, 2012.
  15. IBM Corporation (1973). OS/VS Assembler Programmer's Guide (PDF).
  16. IBM Corporation. "आईबीएम हाई लेवल असेंबलर और टूलकिट फ़ीचर - रिलीज़ इतिहास". Retrieved October 21, 2012.
  17. IBM Corporation (5 May 1992). "Announcement Letter 292-244: IBM HIGH LEVEL ASSEMBLER/MVS & VM & VSE". Retrieved October 21, 2012.
  18. 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
  19. IBM Corporation (2008). zSeries उपयोगकर्ता गाइड पर लिनक्स के लिए उच्च स्तरीय असेंबलर (PDF).
  20. "जॉन आर. एहरमन संग्रह के लिए गाइड". Online Archive of California. X5621.2010. Archived from the original on 2022-10-15. Retrieved 2022-10-15. [1]
  21. "IBM HIGH LEVEL ASSEMBLER/MVS & VM & VSE". Announcement letters. IBM Corporation. May 5, 1992. 292-244. Retrieved October 8, 2012.
  22. 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.
  23. IBM Corporation. "टूलकिट फ़ीचर घटक". Retrieved October 21, 2012.
  24. 24.0 24.1 IBM Corporation (1966). IBM System/360 Model 44 Programming System Assembler Language (PDF).
  25. IBM Corporation (1976). आईबीएम टाइम शेयरिंग सिस्टम असेंबलर प्रोग्रामर गाइड (PDF).
  26. Alcock, David. "Dave's z/Architecture Assembler FAQ". Planet MVS. Retrieved December 15, 2012.
  27. Fujitsu ASSEMH manuals available from http://manuals.ts.fujitsu.com/index.php?id=1-2-2926-15435 (Retrieved 2016-02-27)
  28. Dignus, LLC. "Systems/ASM". Retrieved December 15, 2012.
  29. टैचयोन सॉफ्टवेयर LLC. "टैचयोन सॉफ्टवेयर". Retrieved December 15, 2012.
Additional references
  • Rudd, Anthony. An Illustrated Guide for z/Architecture Assembler Programmers. Create Space (2012).


बाहरी संबंध