A New Assembler Book: Mine

I’ve been working on a new assembler book for a while – writing new material and organizing the old material I’ve written into a coherent whole. I think there is a need for a book aimed at beginning assembler programmers, and this is my best attempt. I love John Erhman’s assembler text, Assembler Language Programming for IBM z System Servers –  Version 2.00. It’s hard to beat John’s book for the wealth of material it contains. But I would characterize that book as a reference book, rather than a textbook. What I’m aiming for is a text that an instructor could use for a class, or a book that an interested reader could use on their own to learn IBM assembly language. So the book introduces topics in an order I found helpful for teaching beginners. I hope that together these two books will help you master this language.

Here is where you come in: I could use your help. I’m publishing each of the completed chapters on the website for you to use. If you find errors or have suggestions for making it better, let me know. You see, I’m not punctilious. I try to be – it’s a goal – but I’m not, and I need your help finding errors. At some point, I’ll put all the chapters together into a physical book and make it available to you. In the meantime, help me make this better now.

17 thoughts on “A New Assembler Book: Mine”

  1. Hello Dr Woolbright,

    It will be an honor to read the book and give feedback. Will send ASAP. Thank you for providing this resource.

    Best wishes,

    Hugh Mayfield
    CICS/MQ sysprog, Brno, Czech Republic.

  2. Thank you for the opportunity —
    After a quick scan – I see one packaging problem;
    — Ch-6 and Ch-6 have the same body “CHAPTER 6: PACKING IT IN” — “CHAPTER 8: PACKING IT IN”
    — Ch-3 “A First Program” – you demonstrate establishing R12 as base register. I’ve done that for decades – and recently had to retrain myself because “LE” uses R12 for CAA . It took quite a bit of debugging to realize that U-40xx ABENDs in my program were not exactly the fault of the calling program. (OK – it was – but IBM published information warning me – all of us).
    ==> https://www.ibm.com/docs/en/cics-ts/5.5?topic=applications-language-environment-coding-requirements-assembler-language

    — a style difference:
    You load that base with a BALR/BASR — I did that decades ago
    – then changed to LR R12,R15 — it made debugging easier when I was too tired to automatically add 2 bytes (or subtract 2 bytes) in middle of dump

    Good luck – I will go thru more thoroughly — good to see new works around assembler.
    Thanks for the opportunity to look at it.

    1. Les – Many thanks for your comments. I changed the link to chapter 6 so that the correct material comes up now. I suppose I was thinking of Language Environment assembler programs as an advanced topic. Perhaps that is no longer the case? I have written about LE Assembler, but not on the Punctilious site, evidently. I’ll go back and review what I have and post it. I think I will add some comments in the chapter 3 about R12 and LE as you wisely suggested. I’ve stuck with BALR/BASR like a curmudgeon because I thought it was a good thing for beginners to have do that computation, but I should also mention LR as you suggest. I do appreciate your help taking time to read this and respond. – David

    2. Les,
      I added a paragraph about the LE to Chapter 3 that states the program isn’t suitable to run in LE because of R12. I’m going to stick with the same code for the moment because it is historically correct and LE came later. It’s a dilemma teaching IBM Assembler, do you teach things in historical sequence or should you only teach the current stuff. Students probably need a knowledge of both. Your comment helped me think about that.
      David

    3. The LR technique needs to be in Chapter 4, I believe. That chapter was written years ago and needs updating as well. In any case, thanks for the helpful suggestion.

  3. I’ve gone a bit further – Ch3, Ch4 … looks good – a few comments:
    Ch3 —
    * text statement of eyecatcher DC X’FFFFFFFF’ preceding FILEIN DCB … but it is not in code text
    * assembler name can include underscore “_” characters

    I like the note on useful “why” comments and about “poor comments”

    * Agree that the book is not on JCL, it might be useful to note about additions to the HLASMCLG for execution:
    e.g.,:
    //GO.FILEIN DD *
    Hello, World! REC1 REC1 REC1 REC1 REC1 REC1 REC1 REC1 REC1 REC1 REC1 REC1 REC1
    RCORD2 REC2 REC2 REC2 REC2 REC2 REC2 REC2 REC2 REC2 REC2 REC2 REC2 REC2 REC2
    Goodbye. REC3 REC3 REC3 REC3 REC3 REC3 REC3 REC3 REC3 REC3 REC3 REC3 REC3 REC3
    //GO.FILEOUT DD SYSOUT=*

    * p.11 “For some instructions, the last byte is also part of the operation code” …
    I think more accurately “for some instructions the second byte or the last byte …”

    * thanks for including some examples of errors and recommendations regarding such.

    * people should review all the additional report pages that ASM generates.


    Ch4 —
    * looks good, I like your explanation of sequence of USING/BASR BASR/USING …

  4. Congratulations David! I will try to set aside some time to look at it.

    Regards,
    [cid:image001.gif@01D7B31A.E01AE6E0]Michael Joseph
    Sr. Systems Engineer
    Blue Hill Data Services | Fully Managed Data Center Hosting Solutions
    2 Blue Hill Plaza, Pearl River, NY 10965
    Office: 845.875.7041| Mobile: 201-679-4902
    http://www.bluehilldata.com

  5. Hi David,
    I see you have made some updates to some of the chapters in your book. Just downloaded them. Will read through and practice when I can. Hope all is well with you.

    Joe Kratzer
    Systems Engineer
    Blue Hill Data Services | Fully Managed Data Center Hosting Solutions
    2 Blue Hill Plaza, Pearl River, NY 10965
    http://www.bluehilldata.com

Leave a Reply to dwoolbrightCancel reply