This is a fairly basic question, and I almost feel ashamed to ask it; I'm guessing it can be answered in a single sentence.

There was a rather influential series of assemblers for some of IBM's electronic data-processing machines. Here is my understanding of the evolution: The first in the line was called the “Symbolic Assembly Program” or SAP; after being picked up by [SHARE](https://en.wikipedia.org/wiki/SHARE_(computing)), the acronym came to stand for “SHARE Assembly Program”. When FORTRAN came along, a new version was coded for the compiler and called the “FORTRAN Assembly Program” or FAP.

From what I can find, documentation survives only for [a 704 SAP from 1956-03-22](http://sky-visions.com/ibm/704/uasap.pdf), and for a few early-1960s versions for the 7090, which can be found [on Bitsavers](http://www.bitsavers.org/pdf/ibm/7090/). It seems the assembler grew support for macros in this time.

Two pseudo-operations are provided to change the destination of assembled code. The first is `ORG`:

> 
> The ORG (Origin) pseudo-operation is used to set the “next location to be assigned by the assembler” to a desired value.  
> 
> ⋮  
> 
> The effect of an ORG on the binary output of the assembler is to cause any words in the punch buffer to be written out, and to cause the next output to start at the new card origin.  
> 
> ⋮  
> 
> The ORG pseudo-operation causes the next instruction to be assembled at the origin given
> ([C28-6235-2, p. 25](http://www.bitsavers.org/pdf/ibm/7090/C28-6235-2_7090_FAP.pdf#page=31)).
> 
> 
> 

Then there is LOC:

> 
> The LOC (Location) pseudo-operation is used to set the program counter.  
> 
> ⋮  
> 
> LOC will not cause any binary words in the punch buffer to be written out ([ibid](http://www.bitsavers.org/pdf/ibm/7090/C28-6235-2_7090_FAP.pdf#page=31)).
> 
> 
> 

Later we learn the following:

> 
> The assembler uses two counters called the “location counter” and “program counter” to keep track of the “next instruction to be assigned”. Initially, both counters are set to zero. When an instruction, which is not a pseudo-operation, is processed, its location symbol, if any, is entered into the symbol table together with the current value of the program counter. Then both counters are increased by one or, for certain orders, by two. Pseudo-operations affect both counters in different ways. ORG sets both counters to the given value; LOC sets only the program counter ([same document, page 61](http://www.bitsavers.org/pdf/ibm/7090/C28-6235-2_7090_FAP.pdf#page=67)).
> 
> 
> 

The title of this question is now trivially answered. But what is the purpose of having LOC as well as ORG? In what situation is LOC necessary or useful? When would de-synchronizing the two counters be desirable? Does it have something to do with relocatable assembly? I admit that that is an area I am not too clear about.