Rusty and questioning my own code

Posted a video to YouTube. Then wondered if a instruction I used was the best. The code in question is the first LA. Which worked. But again is it correct?

** Setup loop to lowercase a string
LA R5,L'STRING Length of STRING
LA R6,STRING Address of STRING
INIT BAL R7,LOWER Perform Lower 
AH R6,=H'1' Next position in STRING 
BCT R5,INIT Decrement R5 then goto INIT until zero

Should I have instead used one of the following two Loads “L”

** Setup loop to lowercase a string
L R5,=H'43' Length of STRING 
L R5,=F'43' Length of STRING 
LA R6,STRING Address of STRING
INIT BAL R7,LOWER Perform Lower 
AH R6,=H'1' Next position in STRING 
BCT R5,INIT Decrement R5 then goto INIT until zero

Which brought up another question. Why does R5 look different between the two? Using the Z390 Interactive Debugger I found…

Loading a Halfword, R5 looks like…
R5=00000000002B0001

What’s with the low order 0001? I questioned it…setup test on MVS (tk4-), using PDUMPs…and got the same result.

Loading a Fullword, R5 looks identical to the first example which uses LA, like…
R5=000000000000002B

So I really need to review Halfword loads vs Fullword loads. I admit I just don’t remember, In my rusty mind I guess I just thought the only difference was the amount of storage each took up in the literal pool (I think that’s what it’s called)

After a little thought I remembered the Load Halfword instruction or LH and tested it. LH R5,=H’43’. Result…

R5=000000000000002B

That also looks good!