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]