IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

LA instruction in assembler


IBM Mainframe Forums -> PL/I & Assembler
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
janishyathi bonam

New User


Joined: 05 May 2020
Posts: 2
Location: USA

PostPosted: Tue May 05, 2020 8:17 am
Reply with quote

Hi!
I'm trying to LA R1,5000 and it says invalid displacement. Is there a limit to the value of the second operand? How can I achieve this?
Back to top
View user's profile Send private message
steve-myers

Active Member


Joined: 30 Nov 2013
Posts: 917
Location: The Universe

PostPosted: Tue May 05, 2020 9:52 am
Reply with quote

Yes, there is a limit: 4095. There are at least three ways to achieve your goal.
  • Two LA instructions, for example
    Code:
             LA    R1,2500
             LA    R1,2500(,R1)

    Dinosaurs like me would use this solution. The actual immediate values can be anything that adds to 5000; they do not have be 2500.
  • LHI instruction
    Code:
             LHI   R1,5000

    This solution uses just 4 bytes.
  • LGFI instruction
    Code:
             LGFI  1,5000

    This is hidden in Principles of Operation, but the sign of the immediate value is extended to bits 0 through 31 of the register. This solution uses 6 bytes.
Back to top
View user's profile Send private message
janishyathi bonam

New User


Joined: 05 May 2020
Posts: 2
Location: USA

PostPosted: Tue May 05, 2020 9:56 am
Reply with quote

Thank you!!
Back to top
View user's profile Send private message
Ravi GA

New User


Joined: 20 Mar 2020
Posts: 12
Location: India

PostPosted: Tue May 05, 2020 10:47 am
Reply with quote

janishyathi bonam wrote:
Hi!
I'm trying to LA R1,5000 and it says invalid displacement. Is there a limit to the value of the second operand? How can I achieve this?


LAY R1,5000 is one more way to load values greater than 4095.
Back to top
View user's profile Send private message
steve-myers

Active Member


Joined: 30 Nov 2013
Posts: 917
Location: The Universe

PostPosted: Tue May 05, 2020 11:43 am
Reply with quote

Ravi GA wrote:
... LAY R1,5000 is one more way to load values greater than 4095.
Yes, indeed. I had forgotten about LAY. I would suggest you read Principles of Operation very carefully before using it.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> PL/I & Assembler

 


Similar Topics
Topic Forum Replies
No new posts Build dataset list with properties us... PL/I & Assembler 4
No new posts Finding Assembler programs PL/I & Assembler 5
No new posts How Can I Recall a Migrated Data Set ... PL/I & Assembler 3
No new posts step by step trace 4 ISPF dialog call... TSO/ISPF 17
No new posts Getting SOC4 while calling a Cobol DB... PL/I & Assembler 4
Search our Forums:

Back to Top