On 2020-05-01 12:14, [email protected] wrote:
I must really be getting old, because I actually remember the origin of
the
convention.
The convention of "*-*" in a length field was based upon an
interpretation
of the expression "{address-of-last-byte}-{address-of-first-byte}"
which
calculates the "machine length" of the field, which is one less than
the
actual length of the field.
More accurately, it calculates zero, which, if the instruction were
executed
"as is", gives the length of transfer (assuming MVC, CLC, OC, etc).
For other instructions such as the integer family,
the field has other effects giving the ability to change
register number etc.
When moving a variable length field, the instruction had to be
"EX(ecuted)",
so the programmer likely did not know the value of
"{address-of-last-byte}"
at assembly time and in many cases did not know the value of
"{address-of-first-byte}" at assembly time, so the programmer simply
replaced each unknown with "*" and voila, we had "*-*".
We discussed this in assembler programming class some 47 years ago.
John P. Baker
Software Developer