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.
> >
>

Reply via email to