What's wrong with
CHKOPTS1 LA R7,TABLE1+2 ADDRESS OF FIRST ELEMENT
LA R9,TABLE1+2 ADDRESS OF BEGINNING OF TABLE
AH R9,TABLE1 CALC ADDR OF END OF TABLE
LOOP1 LH R8,0(R7) entry length for BXLE
CLC 0(9,R7),=C'FFFFFFFFF'
JE FOUND ENTRY FOUND = RC=0
BXLE R7,R8,LOOP1 LOOPING UNTIL OPT FOUND
Specifying the length field on your USING?
--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3
עַם יִשְׂרָאֵל חַי
נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר
________________________________________
From: IBM Mainframe Assembler List <[email protected]> on behalf
of Peter Vels <[email protected]>
Sent: Wednesday, June 5, 2024 3:42 AM
To: [email protected]
Subject: Re: BXLE usage assistance
Hi Mark,
Try this:
<snip>
CHKOPTS1 LA R7,TABLE1+4 ADDRESS OF FIRST ELEMENT
LH R8,TABLE1+2 LENGTH OF TABLE ENTRY
LR R6,R8 SAVE R8 FOR LATER
LA R9,TABLE1+2 ADDRESS OF BEGINNING OF TABLE
AH R9,TABLE1 CALC ADDR OF END OF TABLE
LOOP1 CLC 0(9,R7),=C'FFFFFFFFF'
JE FOUND ENTRY FOUND = RC=0
* --->>> LH R8,0(2,R7) <<<--- POINT TO LENGTH OF NEXT ENTRY
LR R8,R6 RESTORE R8
LH R6,0(R8,R7) PUT THE NEXT LENGTH INTO R6
LA R7,2(R7) SKIP OVER THE LENGTH FIELD
BXLE R7,R8,LOOP1 LOOPING UNTIL OPT FOUND
<snip>
I don't like that I used an extra register, R6, so I'm hoping someone can
improve it.
Peter
On Wed, 5 Jun 2024 at 03:58, Mike Shaw <[email protected]> wrote:
> Mark,
>
> You are coding a length (the 2) in the 2nd operand of your LH
> instruction...that 2 is being used by the machine as register 2. LH always
> loads two bytes.
>
> Mike Shaw
> MVS/QuickRef Support
> Chisoft
>
>
> On Tue, Jun 4, 2024, 1:38 PM Mark Young <[email protected]> wrote:
>
> > Thanks for all the replies. See the code sample below. I'm getting
> stuck
> > trying to get the length for the next table entry into R8 so the BXLE
> > instruction loop the correct length. Let me know if I'm on the correct
> > path, or I'm in never never land. Also, the --->>> <<<--- is
> > where I think I'm getting stuck.
> >
> > TESTBXLE CSECT ,
> > TESTBXLE AMODE 31
> > TESTBXLE RMODE ANY
> > SAVE (14,12),,TESTBXLE*&SYSDATE*&SYSTIME
> > BALR R12,0 R12 - BASE REGISTER
> > USING *,R12 ESTABLISH ADDRESSABILITY
> > ST R13,SAVEAREA+4 SAVEAREA
> > LA R13,SAVEAREA POINTERS
> > *
> > CHKOPTS1 LA R7,TABLE1+4 ADDRESS OF FIRST ELEMENT
> > LH R8,TABLE1+2 LENGTH OF TABLE ENTRY
> > LA R9,TABLE1+2 ADDRESS OF BEGINNING OF TABLE
> > AH R9,TABLE1 CALC ADDR OF END OF TABLE
> > LOOP1 CLC 0(9,R7),=C'FFFFFFFFF'
> > BE FOUND ENTRY FOUND = RC=0
> > --->>> LH R8,0(2,R7) <<<--- POINT TO LENGTH OF NEXT ENTRY
> > BXLE R7,R8,LOOP1 LOOPING UNTIL OPT FOUND
> > B NOTFND ENRTY NOT FOUND ? RC=8
> > *
> > FOUND L R13,SAVEAREA+4
> > RETURN (14,12),RC=0
> > *
> > NOTFND L R13,SAVEAREA+4
> > RETURN (14,12),RC=8
> > *
> > PRINT NOGEN
> > YREGS
> > SAVEAREA DS 18F
> > TABLE1 DS 0F
> > DC XL2'008F'
> > DC XL2'000E',CL14'AAAAAAAAAAAAAA'
> > DC XL2'000F',CL15'BBBBBBBBBBBBBBB'
> > DC XL2'0011',CL17'CCCCCCCCCCCCCCCCC'
> > DC XL2'000D',CL13'DDDDDDDDDDDDD'
> > DC XL2'0017',CL23'EEEEEEEEEEEEEEEEEEEEEEE'
> > DC XL2'0009',CL9'FFFFFFFFF'
> > DC XL2'0013',CL19'GGGGGGGGGGGGGGGGGGG'
> > DC XL2'0019',CL25'HHHHHHHHHHHHHHHHHHHHHHHHH'
> > DC XL2'0008',CL8'IIIIIIII'
> > END TESTBXLE
> >
> >
> > Thanks,
> > Mark.
> >
>