'I've interned at a company that does a lot of mainframe work. Most of my mainframe experience has been using Java and Unix System Services. I've had some experience with the ISPF interface and C but none with assembler. I’m graduating shortly and will be taking an independent study my last semester. I’d like to stick with the mainframe and was wondering what resources could teach me mainframe assembler? Note I don’t have experience writing assembler for any platform but do understand binary, hex, and have a theoretical understanding of registers.
Learning assembler is certainly a good way of understanding how computers really work, but I'd suggest that jumping in to 390 assembler will involve a very steep learning curve. I'd suggest getting hold of a microprocessor emulator such as http://www.emu8086.com/ which comes with a tutorial and starting with that. The basic cncepts you learn will be transferable to other ,more complex, architectures.
There is a mainframe emulator called Hercules, and some older mainframe operating systems can be obtained for free (legally). You may find that you can use this to do some experimentation with Mainframe assembler. The instruction set will be no more complex than a 386 family, so learning assembler on this system is probably as good as any.
As an alternative, this Stackoverflow posting discusses other ways to learn assembler.
I have been in your position; I am a student, myself. I have found that trying to teach yourself mainframe assembler, especially on top of other classes, with no support and no one to turn to for quick answers, it is best to just take an actual course in it. I have coded in C++, .NET, Assembler, COBOL, High Level Assembler and others, and the thing that really helped me in the two assembler classes was being in a structured environment with lots of support in place.
None of the following are tutorial-like, just reference material. All will eventually come in handy though, so good to know; of interest would be:
- HLASM Programmer's Guide
- HLASM Language Reference
- HLASM General Information
- MVS Program Management: User's Guide and Reference
- MVS Assembler Services Guide
- MVS Authorized Assembler Services Guide
- z/Architecture Principles of Operation
You can find the books for the z/OS version you're on at IBM doc library:
z/Architecture Principles of Operation ("the POP manual") is the system bible. Of immediate interest in that book would be chapter 7 which lists the instructions and instruction formats.
For tutorial material though I can recommend (these are all on my bookshelf) any of the following:
- Mainframe Assembler Programming by Bill Qualls (this one comes with an emulator, PC/370, for compiling and running assembler)
- MVS Assembler Language by Kevin McQuillen and Anne Prince
And after you've mastered the basics:
- Advanced Assembler Language and MVS Interfaces For IBM Systems and Application Programmers by Carmine A. Cannatello
If you have questions you can, use stackoverflow of course, but for a more mainframe-centric pool of brains to pick, try http://ibmmainframeforum.com/. It isn't highly active, but the moderators know the dark arts.
Have fun!
I've been able to teach myself the very basics using the following material along with co-workers who I can ask questions of. For an easy way to run and debug basic assembly programs I use the Z390 emulator with the option allowing use of the assist instructions as well as the test option for interactive debugging. I've used this as the main introductory tutorial. I've used this class site as another reference. Finally these Share materials may be useful although I don't know how good they are since they aren't very accessible with my screen reader.