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

Reply via email to