LA R1,1 is synonymous with LA R1,1(0); both simply load R1 with 
0x00000001, which in this case is the number of AXs being requested.You don’t 
actually  need to load R0 with zero to use it as a base register.  USING PSA,R0 
is what you might call HLASM syntactic sugar.Also are you au fait with how an 
AX and an EAX are used and when one or the other is required?  Setting up and 
using an EAX considerably more convoluted than setting up/using an AX.
Keven
        
        

        
    
  




On Wed, Nov 6, 2019 at 11:15 AM -0600, "[email protected]" <[email protected]> 
wrote:










Hi,.I tried posting this at IBM-MAIN, however I am experiencing problems
with that site, so I decided to post here.
.
I need some clarification with some instructions being used in an example from 
SA23-1394-30
Im referring to:
MVS Programming Extended addressability Guide
SA23-1394-30
Page 38-39
Figure 12 
Cross Memory Services
EAX 
SETDEF
.
.
Please refer to "MVS Programming Extended Addressability Guide"
SA23-1394-30
Around page 39
Figure 12 
Using ETDEF to dynamically define entry table addresses.
.
The sample code in Figure 12 looks odd to me.
The code sample begins with the following sequence of instructions
The example is trying to show how to set an EAX
 LA 1,1(0)
 ST 1,AXNUM
.
 L 4,AXVAL
 ETDEF TYPE=SETDEF
.
the work areas are:
AXL   DS 0F  AXLIST
AXNUM DS H   Number of AXs Requested
AXVAL DS H   Returned AX (OR EAX)
.
The example is trying to show how to set an EAX for a SETDEF macro.
. 
My understanding - the first 3 instructions want to establish an EAX..
The first Instruction load 1 off of Register 0.
Is register 0 assumed to be zero ?
If the author wanted to initialize Register 1 with a value of 1, wouldn't it be
better to use:
 AHI  R1,1
   *or*
 LA   R1,1 
.
Typically Register 0 can't be used as a base register, however its my 
understanding
when addressing the PSA, Register 0 is acceptable such as:
 USING PSA,R0              MAP Prefix Save Area       
 USING TCB,R2              MAP Task Control Block     
 LA    R0,0                                           
 L     R2,PSATOLD          Get Address Of Current TCB 
 ST    R2,TCB@             Save TCB Address 
.
.
It is my understanding that Register 0 cannot be used as a base register.
Register 0 can be used to address the first 4096 bytes of an address space.
.
.
In the example in Extended Addressability
What value does register 0 contain in Figure 12 page 39 in order to obtain an 
EAX ?
If Register 0 contains a value greater than 4096, then Register 1 contains a 1.
If Register 0 contains a value >0 and < 4096, then Register 1 contains a value 
other
than 1. Do I understand that correctly ?
.
So exactly what value does the author want to use in figure 12 ?
.
Second
Before the SETDEF macro is issued in figure 12 - Register 4 is loaded with 
AXVAL. 
But wait ! AXVAL is a half word ….. does that make sense ?
Should the instruction have been written
XR R4,R4
LH R4.AXVAL
.
.
The sample code and notes say EAX(4) specifies the EAX for the PC routine is in 
Register 4.
The Load of Register 4 seems incorrect to me..
Can someone clarify ?
.
.
Paul D'Angelo
.
.

Reply via email to