(snip, I wrote)
>>I wonder if USING 0,0 and USING 4096,1 should work correctly.

>What are you trying to accomplish? There are three forms of USING, 
>and all three require an address as the first operand. This is given as 
>a label to tell the assembler that the address of that label is in the 
>register specified. The assembler then computes the displacements 
>for other operands based upon the value that you have told the 
>assembler that you have placed in the register.

>>I have tried it with START 1000, and START 5000, respectively,

>What do you hope to accomplish with that?

>>This is my first time trying to assemble for absolute addresses.

>Do you mean that you are not using labels? If so, why?

>What do you mean by absolute addresses? Do you intend that your 
>program will be loaded into a specific location in memory, determined 
>at assembly time? 

Yes, it will be loaded into the address specified at assembly.

If I say:

     START 1000

the assembler generates addresses starting from 1000, and the program
is loaded into those addresses.

>In z/Architecture, and dating back to System/370, there 
>are three kinds of addresses:

Dating back to S/360, actually...

>o Virtual addresses. These are the addresses that programs normally 
>  work with.
>o Real addresses. These are the result of Dynamic Address 
>  Translation of a virtual address.
>o Absolute addresses. These are the result of applying the Prefix 
>  register to a real address.

Well, real addresses also work with DAT off, or on machines that don't
have DAT. 

For actual use with OS/360, this likely only happens in an FLIH, 
(First Level Interrupt Handler), and the routine that first gets
control on IPL, but the assemblers have to be able to do that.

Someone from Tachyonsoft has told me the answer, though I am still
not sure that I understand it.  It goes like:

XXX     START 1000
        USING XXX,0

In the usual case, the displacement is computed by subtracting
the desired offset from the offset in the base register, 1000
in this case. But it seems that the assembler instead subtracts
zero.

I haven't yet tried:

        USING XXX,0,1

to see if it subtracts 4096, and generates displacements
from register 1.

-- glen

Reply via email to