31 lines
1.2 KiB
Plaintext
31 lines
1.2 KiB
Plaintext
* Reverse a string 21/05/2016
|
|
REVERSE CSECT
|
|
USING REVERSE,R13 base register
|
|
B 72(R15) skip savearea
|
|
DC 17F'0' savearea
|
|
STM R14,R12,12(R13) prolog
|
|
ST R13,4(R15) "
|
|
ST R15,8(R13) "
|
|
LR R13,R15 "
|
|
MVC TMP(L'C),C tmp=c
|
|
LA R8,C @c[1]
|
|
LA R9,TMP+L'C-1 @tmp[n-1]
|
|
LA R6,1 i=1
|
|
LA R7,L'C n=length(c)
|
|
LOOPI CR R6,R7 do i=1 to n
|
|
BH ELOOPI leave i
|
|
MVC 0(1,R8),0(R9) substr(c,i,1)=substr(tmp,n-i+1,1)
|
|
LA R8,1(R8) @c=@c+1
|
|
BCTR R9,0 @tmp=@tmp-1
|
|
LA R6,1(R6) i=i+1
|
|
B LOOPI next i
|
|
ELOOPI XPRNT C,L'C print c
|
|
L R13,4(0,R13) epilog
|
|
LM R14,R12,12(R13) "
|
|
XR R15,R15 "
|
|
BR R14 exit
|
|
C DC CL12'edoC attesoR'
|
|
TMP DS CL12
|
|
REGEQU
|
|
END REVERSE
|