Talk:IBM Basic assembly language and successors
![]() | Computing Unassessed | |||||||||
|
BAL brings back memories
XC CATS,DOGS XC DOGS,CATS XC CATS,DOGS CATS DC CL32'Now is the time for all good men' DOGS DC CL32'It is a far far better thing I d'
I loved those Boolean operators. Naaman Brown (talk) 00:22, 4 February 2009 (UTC)
I love the Execute instruction. You could actually write a very complex program on a 16K machine. —Preceding unsigned comment added by 24.207.255.169 (talk) 02:49, 29 October 2009 (UTC)
There is a lot to be written about IBM System/360 and its successors. The jumps to 31 and 64 bit addressing. The migration of system calls from SVC (Supervisor Call) instructions, with the overhead of the interrupt handler to PC, especially for in-address-space services such as storage management. The evolution of secondary address spaces. Count Key Data disks vs fixed block (and the emulation issues). It goes on. One day… Jhlister (talk) 00:56, 12 February 2010 (UTC)
The purpose of EX was not to write gratuitous self-modifying code although from your comments that was a common misuse. The purpose was to provide a way to cater for dynamic length moves and other instructions where the lengths of the operands were not known until EXecution time.
Other techniques were designed and deployed for memory constrained environments such as linkage overlays. 84.228.198.178 (talk) 18:56, 18 December 2010 (UTC)
The Difference between BAL and ALC
My understanding is that BAL lacked the Extended Mnemonics of ALC. Thus one was forced to code BC 8,LABEL rather than BE LABEL. I suspect that BAL was provided by IBM to support BOS and BPS, which were the early operating systems.
Since C was not used anywhere I worked so I cannot address it, but I very much doubt that any compiled language can compete with well written assembler. The real heart of the matter is that companies were willing and able to trade cycles (and other resources) for an expanded work force. It is hard to train an accomplished assembler programmer when compared to a higher level language programmer.
From my experience (30+ years) as a mainframe systems programmer.
24.130.152.247 (talk) 17:56, 3 April 2010 (UTC)
The name BAL hasn't been used outside of applications shops in the 1980s. Everybody for the last 25 or 30 years just calls it assembler. Not assembly, not assembly language, just "assembler".84.228.198.178 (talk) 18:53, 18 December 2010 (UTC)
"Hell World" does not need savearea
The "Hello World" example stacks a new savearea. This is not necessary, because the "WTO" ("write to operator") eventually expands into a "supervisor call" hardware instruction. Supervisor call handlers in the operating system save and restore registers into their own savearea, not into the savearea pointed to by register 13 upon invocation. Savearea's typically are needed if routines are invoked by a CALL macro instruction, which expands into a BAL or BALR instruction, that invokes the required routine directly, without supervisor involvement (supervisor = operating system).
Granted, the "Hello World" program becomes amazingly simple even in Assembly Language if no (new) savearea is needed. If you want to underline the complexity of this language, peraps use an OPEN, CLOSE, PUT and DCB macro instruction instead. It is actually bad practice to make undue WTO calls, because the operator of a mainframe typically is a person in the computer center, not the user. Rbakels (talk) 05:04, 19 July 2010 (UTC)
Hmm. OPEN, CLOSE & PUT are executable macro instructions: they generate code. OPEN and CLOSE result in SVC (Supervisor Call) instructions. PUT results in a subroutine call, the address of which is obtained from the open DCB (and I can’t remember what the routine is, but it’s one of the LPA routines that support QSAM buffering). So PUT does require a save area.
On the other hand, the DCB macro generates a control block (data structure) that the Z/OS operating system uses to coordinate input/output for a given file. It’s an unfortunate part of the history of the OS/360 and successor operating systems that OS data structures are maintained in user space.
And if anyone finds that weird, look at the underlying code for VSAM, VTAM, and the ACB!
Instruction Format
The article read "In most instructions, the target for an instruction appears first, then the source on the right (as with "a = 6" in C or Algol programming)." This is just not true. Peter Flass (talk) 03:18, 9 January 2012 (UTC)
I disagree: I don't want to count instructions by hand, but there are classes of instructions which follow the rule:
The RR instructions:
AR RX,RY
Adds the contents of RY to RX, so the target is RX.
The RX instructions:
A RX,nnn(RY,RZ)
adds the contents of the storage ___location indexed by RY, RZ and the offset nnn to RX. So the target is RX. There is an exception here: the Store instructions go the other way round.
The decimal, and character instructions work the same way.