Do your assembler programs look like they were written in 1970? Are you still using the instruction set your dad learned back in college? There are lots of new instructions you can master with minimal effort. Consider branching. The old-fashioned BC and all the related extended mnemonics (BL,BH, …) all use base/displacement addresses to satisfy your desire to change locations. But there is a host of newer, relative-branch instructions that determine the target location by adding a signed binary integer to the current PSW instruction address instead. What’s the difference? The old BC-based instructions require that you have a base register covering up the target address, so if you have lots of executable code, you’ll need more base registers. The new relative branch instructions don’t need a base register at all – they jump forward and backward from the current PSW address.
So … if you put all the static storage fields together and keep them separate from your executable code, one base register might be sufficient.
I’ve put together a sample program at http://csc.columbusstate.edu/woolbright/relative/relative.txt that demonstrates how this can happen. There’s also a new video in the video course that walks you through it at http://csc.columbusstate.edu/woolbright/relative/relative.html . The program uses a newer linkage technique but its not a requirement for this idea to work for you.
It’s time to show your daddy a thing or two…
Occasionally you need to take a DSECT and apply the structure to multiple areas of storage simultaneously. With a standard DSECT that can be tricky. What you need in these cases is an idea called a “Labeled Using”. You can watch a short video that shows you how to use this powerful idea here.
Here’s the code that goes along with the video:
Want to learn more about Shift and Round Packed? Exactly how does BASR load the base address of an assembler program? Explore these ideas in the following videos that are new additions to the video course in assembler.
Here is the link for BASR
Here is the link for SRP
It is a happy new year for me. I recently retired from the university and I’m enjoying entertaining myself with exercise and study. I’m determined to keep my hand in with assembler language and continue producing videos that I hope you find helpful. Here is the latest effort that covers the Shift and Round Decimal instruction. You can find the video course in its current state here.
I recently added another panel in VisibleZ that will allow you to navigate easily to the Codes directory. In the future, the Codes directory will be distributed separately. I’ve also made some corrections in a few instructions to more closely simulate what happens in System/z. Download the latest version from the blog site for these latest changes.
If you are looking for instruction on a particular topic, let me know and I’ll add it to the production schedule … and Happy New Year!
Dear Readers, It may be a few weeks between posts. I’ve had a small heart problem that required my immediate attention. Thankfully, the medical solution was available and I’m on the mend, and looking forward to turning my attention to all things assembler. Life really is a blessing, and one of the small blessings in my life is having readers like you follow the site and sometimes find it helpful. I hope you will come back when I’m posting again.
I’ve gotten interested in mechanical computing devices and I’ve known about this one for years. It was an IBM hexadecimal adder from the 1960’s. I couldn’t resist bidding for it on Ebay.
I had a wonderful time at the recent Marist College Enterprise Computing Conference and I had the pleasure of meeting several IBM engineers who design and program the assembler instructions for new IBM machines. They have an amazing depth of knowledge (as you would expect) of the instruction set and they inspired me to dig deeper into the Principles of Operation to tackle some of the newer instructions.
I was at the conference to promote VisibleZ as a teaching tool, and during the talk I mentioned that there are 500+ instructions now. An engineer in the audience signaled higher! VisibleZ offers a subset of instructions that were available on the System 360 – plenty of instructions to be a useful learning tool. Still, I want to move forward, so over the next year I will post my experiments here with the newer 64 bit oriented instructions. I’ll also try to bring VisibleZ into the 64 bit world.
The image at the top is a conference handout that contained a chip in the bottom right corner from the latest IBM zEnterprise mainframe – an EC12. Check out the statistics of that processor!
You may or may not have stumbled over an S0C9 abend in your work with assembly language, but in any case, you can learn a little more about two data types by watching this video that demonstrates the reasons for an S0C9. The code for the video can be found here and all the other assembler videos for the class here.
MVO is an old instruction that has fallen out of use, replaced by SRP. Still, you will see it in older programs. This video will get you up to speed on this “odd” instruction. You will also find the code from the video here.
In this video we take a final look at S0C7 abends. Here is the code and here is the video homepage. There is one case where the data looks fine, but is incorrectly specified. This video will explain the details of why valid packed decimal data can sometimes be incorrectly coded.
The next video in this series with cover S0CB abends – less common than S0C7 s, but related. Stay tuned.