IBM Basic assembly language and successors: Difference between revisions

Content deleted Content added
Update IBM links, use the Wayback Machine for apparently-dead IBM links, fix titles. Combine duplicate references.
External links: HLASM URLs
 
(11 intermediate revisions by 7 users not shown)
Line 69:
 
==General characteristics==
As it is an [[assembly language]], BAL uses the native [[instruction set]] of the IBM mainframe architecture on which it runs, [[IBM System/360|System/360]]., just as the successors to BAL use the native instruction sets of the IBM mainframe architectures on which they run, including [[IBM System/360|System/360]], [[IBM System/370|System/370]], [[IBM System/370-XA|System/370-XA]], [[IBM ESA/370|ESA/370]], [[IBM ESA/390|ESA/390]], and [[z/Architecture]].
 
The successors to BAL use the native instruction sets of the IBM mainframe architectures on which they run, including [[IBM System/360|System/360]], [[IBM System/370|System/370]], [[IBM System/370-XA|System/370-XA]], [[IBM ESA/370|ESA/370]], [[IBM ESA/390|ESA/390]], and [[z/Architecture]].
 
The simplicity of machine instructions means that the [[source code]] of a program written in assembler will usually be much longer than an equivalent program in, say, [[COBOL]] or [[Fortran]]. In the past, the speed of hand-coded assembler programs was often felt to make up for this drawback, but with the advent of optimizing compilers, [[C (programming language)|C]] for the mainframe, and other advances, assembler has lost much of its appeal. IBM continues to upgrade the assembler, however, and it is still used when the need for speed or very fine control is paramount. However, all of the IBM successors to BAL have included a sophisticated macro facility that allows writing much more compact source code.
Line 249 ⟶ 247:
Assembler H runs on [[OS/360 and successors]]; it was faster and more powerful than Assembler F, but the macro language was not fully compatible.
 
Assembler H Version 2 was announced in 1981 and includes support for Extended Architecture (XA), including the <code>AMODE</code> and <code>RMODE</code> directives.<ref>{{cite book|last=IBM Corporation|title=MVS/Extended Architecture Conversion Notebook|year=1984|url=http://www.bitsavers.org/pdf/ibm/370/MVS_XA/GC28-1143-2_MVS-XA_Conversion_Notebook_May84.pdf}}</ref>{{rp|page=3{{hyp}}28}} It was withdrawn from marketing in 1994 and support ended in 1995. It was replaced by High Level Assembler.<ref>{{cite web|last=IBM Corporation|title=5668-962 IBM Assembler H Version 2 Release 1.0|website=[[IBM]] |date=20 December 1996|url=https://www.ibm.com/common/ssi/cgi-bin/ssialias?infotype=dd&subtype=sm&appname=ShopzSeries&htmlfid=897/ENUS5668-962|accessdate=October 8, 2012|archive-url=https://web.archive.org/web/20210924192756/https://www.ibm.com/common/ssi/cgi-bin/ssialias?infotype=dd&subtype=sm&appname=ShopzSeries&htmlfid=897/ENUS5668-962|archive-date=24 September 2021|url-status=dead}}</ref>
 
===Assembler XF===
Line 255 ⟶ 253:
 
===High Level Assembler===
'''High Level Assembler''' or '''HLASM''' was released in June 1992 replacing IBM's Assembler H Version 2.<ref>{{cite web|last=IBM Corporation|title=IBM High Level Assembler and Toolkit Feature - Release History|website=[[IBM]] |date=19 October 2018 |url=https://www.ibm.com/support/pages/ibm-high-level-assembler-and-toolkit-feature-release-history|access-date=January 19, 2025}}</ref><ref name="hlasm-announcement-letter">{{cite web|publisher=IBM Corporation|type=Announcement letter|id=292-244|title=IBM High Level Assembler/MVS & VM & VSE|date=5 May 1992 |url=https://www.ibm.com/docs/en/announcements/archive/ENUS292-244|access-date=January 19, 2025}}</ref> It was the default translator for System/370 and System/390, and supported the MVS, VSE, and VM operating systems. As of 2023 it is [[IBM]]'s current [[Assembly language|assembler]] programming language for its [[z/OS]], [[z/VSE]], [[z/VM]] and [[z/TPF]] [[operating system]]s on [[z/Architecture]] [[mainframe computer|mainframe]] [[computers]]. Release 6 and later also run on [[Linux]], and generate [[Executable and Linkable Format|ELF]] or [[GOFF]] object files (this environment is sometimes referred to as [[Linux on IBM Z]]).<ref>{{cite book|last=IBM Corporation|title=High Level Assembler for Linux on zSeries User's Guide|year=2008|url=httphttps://publibfp.dhe.ibm.com/epubs/pdf/asml1020.pdf|access-date=2025-07-23}}</ref> While working at IBM, John Robert Ehrman<!-- 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 --> created and was the lead developer for 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
| author = Greg Mushial
Line 285 ⟶ 283:
</syntaxhighlight>
}} <code>USING</code> statements, a list of <code>USING</code> statements currently active, an indication of whether a variable is read or written in the cross-reference, and allowing mixed-case symbol names.<ref name="hlasm-announcement-letter" />
</ref> The <code>RSECT</code> directive (Read-only Control Section) allows the assembler to check reentrancy on a per-section basis. <code>RSECT</code> was previously "undocumented and inconsistently implemented in Assembler H."<ref>{{cite book
| title = IBM High Level Assembler for MVS & VM & VSE Release 2 Presentation Guide
| id = SG24-3910-01
Line 379 ⟶ 377:
{{Wikibooks|360 Assembly}}
 
* [https://www.ibm.com/docs/en/hla-and-tf/1.6.0?topic=generalpdf-information IBM Highformat-documentation LevelPDF Assemblerformat manualdocumentation]
* [https://www.ibm.com/docs/en/SSENW6_1.6.0/pdf/asmg1025_pdf.pdf High Level Assembler for z/OS & z/VM & z/VSE 1.6 General Information]
* [http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/360/asm/SC20-1646-6_int360asm_Aug70.pdf A Programmer's Introduction to IBM System/360 Assembler Language (Student Text)]
* [httphttps://publibz.boulderwww.ibm.com/epubsdocs/en/SSENW6_1.6.0/pdf/asmr1020asmr1024_pdf.pdf High Level Assembler for z/OS & z/VM & z/VSE Language Reference]
* [http://punctiliousprogrammer.com/ The Punctilious Programmer: IBM Mainframe Assembler]
* [https://www.amazon.com/dp/B00NS797PQ Basic IBM Mainframe Assembly Language Programming]