z/OS Assembler

(a 7-day course: 4 + 3)

Course objectives
Many routines and/or O.E.M. products are written in assembler and need to be maintained by systems programmers and/or application staff.
A good understanding of assembler and machine instructions is also an asset for debugging programs written in any high-level language (COBOL, PL/I, etc.).
On completion of this course, the students will have gained fundamental assembler programming and debugging skills that are applicable for both z/OS and z/VM assembler language programmers.
The majority of instructions used by application and systems programmers are explained. Students learn to read and maintain most assembler language programs, as well as use underlying machine instructions to locate programming errors. Through error analysis and debugging techniques, students debug programs using dumps. Programming techniques important to writing reliable and maintainable code are stressed.
Via the different topics of this course the students will be able to integrate basic assembler skills into a usable set of practical skills.
Finally, the students will have gained an indepth insight into mainframe architectures.

Audience
- System programmers
- Other programmers/analysts who could make efficient use of assembler

Prerequisites
You need a working knowledge of a z/OS environment.
You should already have programming skills i.e. know at least one programming language.

Class infrastructure
The students must have access to a z/OS system, and be able to logon under TSO.

Course contents
Mainframe architecture
Storage organization
Data representation : EBCDIC, zoned decimal, packed decimal, fixed point, floating point
Assembler instructions
Machine instructions formats
Linkage conventions
Addressability
Link Editor and Binder
Extended mnemonic instructions
Program checks: operation exception, privileged-operation exception, execute exception, protection exception, addressing exception, specification exception, data exception, fixed-point overflow, fixed-point divide exception, decimal-overflow exception, decimal-divide exception, HFP-exponent-overflow exception, HFP-exponent-underflow exception, HFP-significance exception, HFP-floating-point divide exception, segment-translation exception, page-translation exception
Program Status Word (PSW)
Debugging
QSAM macro instructions : OPEN, DCB, CLOSE, GET, PUT
Coding assembler source statements
Terms, expressions, literals
Boundary alignment
Program sections: CSECTs and DSECTs
Program entry point
The assembler listing
Address constants (ACONs and VCONS), Relocation Dictionary (RLD)
External symbols, External Symbols Dictionary (ESD)
Passing arguments to a program
Machine instructions : load, store, move, insert, translate, branch, convert, decimal, test, compare, logical, shift and fixed-point instructions
(Note : privileged and floating-point instructions are outside the scope of this course.)
User macro definitions
Condition assembly language: variable symbols, SET symbols, AGO, AIF, ...
Dynamic storage allocation
Subpools
System macro's : SNAP, ABEND, SPIE, STAE, WTO, WTOR, TPUT, TGET, GETMAIN, FREEMAIN, STORAGE, CPOOL, IARV64, SPLEVEL, SYSSTATE, STCKCONV, Extended macros, X-macros, ...
Serially reusable and reentrant coding
24-bit, 31-bit, and 64-bit(!) addressing (AMODE and RMODE)
Static call versus dynamic calls (CALL, LOAD, LINK, ATTACH, ..)
Linkage stack
Access registers and AASF
Immediate-and-relative instruction facility

[Back to my home page]
Valid HTML 4.01 transitional (except for the stuff added by GeoCities)!
1