Courses we teach: Assembler Language

z/OS Assembler Programming Part 1: Beginnings - 5 days
z/OS Assembler Programming Part 2: Interfaces - 3 days
z/OS Assembler Programming Part 3: Update - 1 day
z/OS Assembler Programming Part 4: z/Architecture and z/OS - 4 days
Writing z/OS CGIs in Assembler Language - 2 days


Assembler language (also called "Assembly language", and "BAL" (for "Basic Assembler Language")), is the programming language closest to the actual machine instructions of the computer. Programs written in COBOL, PL/I, C, and so on must be compiled, which translates each source statement into many machine instructions. Programs written in Assembler, however, are assembled, generally producing one machine instruction for each statement in the program.

COBOL, C, PL/I, and similar languages are called "High Level Languages", because they hide the underlying architecture of the hardware and the operating system. To code a program in Assembler, a programmer must understand the basic units of data and instruction the machine was designed to work with.

High Level Languages are usually portable: many different hardware and software platforms have compilers for those languages, and you can move a program to a new platform simply by using the right compiler. Assembler language, on the other hand, is not portable at all between hardware platforms: most different hardware platforms use entirely different sets of machine instructions.

Our Assembler courses support HLASM, the High Level ASseMbler.

Our first two courses ("z/OS Assembler Programming Part 1: Beginnings" and "z/OS Assembler Programming Part 2: Interfaces") are intended to be taken as a pair to get the complete introductory content for Assembler programming.

These courses assume some prior programming knowledge. The courses cover every hardware instruction except those instructions in these categories: privileged, semi-privileged, floating point, vector. The pair of courses also focus on z/OS coding conventions for program linkages and I/O services as well as on deubgging and dump reading. They include hardware instructions from the original machines in 1963 through instructions introduced in the 1970s-1980s.

z/OS Assembler Programming Part 3: Update is intended for experienced Assembler programmers who need an introduction to the new instructions introduced to the hardware and the Assembler in recent years. It's also a good follow on to "z/OS Assembler Programming Part 2: Interfaces" for beginning or intermediate Assembler programmers. It includes machine instructions introduced in the 1990's as well as HLASM V1.4.

Advanced Topics in Assembler Language includes a topic mix chosen with the customer. The topics might include: multi-tasking services; writing reenterant code; creating macro definitions; processing VSAM files or BDAM files in Assembler; and so on.

z/OS Assembler Programming Part 4: z/Architecture and z/OS is intended for experienced Assembler progammers who are moving applications to the z/OS environment. It is assumed the programmer is familiar with the content in "OS/390 Assembler Language: Update". Note that this course has been updated to include the new instructions introduced by the z990 machines in June, 2003 and more additional instructions introduced in May, 2004, as well as changes introduced by HLASM V1.5 in June, 2004. We have also added material on additional instructions added with the z9 series in 2006. In 2008, we added new instructions of the z10 machines, HLASM 1.6, and z/OS 1.10 information. Most recently we have added the new instructions added with the advent of the z Enterprise 196 and 114 models (2010 and 2011), and we have added information from z/OS v1.11, v1.12, and v1.13.

Writing z/OS CGIs in Assembler Language is a complete introduction to creating CGI programs in Assembler to run on your z/OS server.


The following courses are multi-lingual and the labs may be run in Assembler language if  the student prefers:

Introduction to TSO and REXX APIs
DB2 Application Coding
DB2 Stored Procedures
Cross Program Communication in z/OS
Creating and Using DLLs in z/OS
Using LE Services in z/OS
Developing Applications for z/OS UNIX


List of topics
Home page