RosettaCodeData/Task/Reverse-a-string/360-Assembly/reverse-a-string-1.360

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