RosettaCodeData/Task/Reverse-a-string/MACRO-11/reverse-a-string.macro11

23 lines
653 B
Plaintext

.TITLE REVERS
.MCALL .GTLIN,.PRINT,.EXIT
REVERS::.GTLIN #1$ ; READ STRING
MOV #1$,R0
JSR PC,REV ; REVERSE IT
.PRINT #1$ ; PRINT RESULT
.EXIT
1$: .BLKB 200
; REVERSE STRING AT R0
REV: MOV R0,R1
1$: TSTB (R1)+ ; FIND END OF STRING
BNE 1$
DEC R1 ; MOVE BACK TO LAST CHAR
2$: MOVB -(R1),R2 ; SWAP CHARS
MOVB (R0),(R1)
MOVB R2,(R0)+
CMP R0,R1 ; STOP WHEN POINTERS MEET
BLT 2$
RTS PC
.END REVERS