On 09/09/10 13:53, Thomas David Rivers wrote: >> Me too. A comparison: >> >> Assembler H: >> >> >> PAGE 2 >> LOC OBJECT CODE ADDR1 ADDR2 STMT SOURCE STATEMENT >> ASM H V 02 10.13 09/09/10 >> 000000 1 NEGDISP CSECT >> FFFFF000 2 USING -4096,R1 >> 000000 4132 1FFC FFFFFC 3 LA R3,-4(R2) >> 4 * >> 000004 0000 0000 00000 5 LA R3,-4(,R2) >> IEV034 *** ERROR *** ADDRESSABILITY ERROR >> 6 * >> 7 YREGS >> > > I'm trying to determine why this would assemble the > instruction at line #3. > > (We have to make some kind of assumption that > allows the negative absolute value as the first > operand of the USING, which both HLASM and ASM H > appear to do.) > > Then, at line #3, there is no base register specified, so > the USING of R1 comes into play. > > Thus, the offset to place in the instruction is > X'FFFFF000' - 4 which is X'FFFFEFFC'. That seems > to be way outside of the range 0 - 4095, so why > isn't there an error? > > If we assume signed arithmetic internally, the > the expression -4096-4 is -4100, which again > is way outside the range. > > Just wondering what arithmetic leads this > particular line to assemble... I must not > be seeing something... > Yah. -4-(-4096) is 4092 (x'FFC'), just inside the range.
Assembler H rules! (I think. I've lost my manual.) -- gil
