You’ve taken the plunge. You’re familiar with the organization of memory, the PSW contents, the purpose of Registers, and the fetch/decode/execute cycle. You understand the idea behind base/displacement addresses as a way to find an item in memory. Now What? What is the best way forward?
The best strategy is to tackle instructions in groups, organized by data type, and the simplest group of instructions contains those that work on character data. It’s harder to cause pesky abends when you are just moving character data from here to there, or comparing a couple of fields and branching based on the condition code. As instructions go, character data instructions are also pretty straightforward – a great place to start. So here’s the plan:
1) Character Data – Learn to define character fields and data here.
2) Character Instructions – Read about MVC (Move Characters), CLC ( Compare Logical Characters), MVI (Move Immediate) and BC (Branch on Condition).
3) Jumping in the Water – Listen to the beginning assembler videos that will show you how to build and submit a simple program:
- Introduction to Assembler Language
- SS1 Instructions, MVC, CLC, MVI
- MVI, DCB, Open, Close, Standard Entry and Exit
- A First Program
- Removing Assembly Errors in the First Program
4) Packed Decimal Data and Instructions – When you are comfortable working with character data, tackle packed decimal data and the instructions that support it (PACK, UNPK, ED, ZAP, AP, SP, DP, MP, SRP, CP).
5) Binary Data and Instructions – Move on to Binary data and learn to program instructions that work in the registers. Start with L, LA, ST, A, S, M, D, C, AR, SR, MR, DR, LR, CR, SRDA.)
6) Name and Conquer – Dummy sections (DSECTs) provide an assembler programmer the ability to use symbolic names to address any storage area. This turns out to be a powerful idea – name and conquer! Read about DSECTs and how they are commonly used.
7) Divide and Conquer – For large projects, programmers divide the problem at hand into multiple programs that are easier to code and understand. In order to make our programs work together, it’s important to learn the established linkage conventions for calling other programs, and for passing data back and forth.
8) Go Exotic – There is a collection of instructions that are invaluable when needed, but aren’t as commonly coded as the instructions mentioned above. These instructions include TR, TRT, TM, MVCL, CLCL, and EX. Take them one at a time and find out how each one is valuable.
9) Keep It Up – There’s no substitute for writing code. In a future post, I’ll highlight a series of assignments that will make you code all the instructions described above. By the time you’ve coded the last program, you’ll be able to call yourself an assembler programmer.