.TITLE MR07.. STRING PROCEDURES IN MACRO ; .IDENT /MR07../ ; .PAGE .SBTTL . STRING REVERSAL PROCEDURE ; ; ; ; R$REVERSE:: ;REVERSE ORDER OF CHARACTERS IN A STRING ; ; ENTRY CONDITIONS ; ; R0 -> CHARACTER STRING TO BE REVERSED ; SAVE R1,R2,R3,R4,R5 ;SAVE CONTENTS OF REGISTERS R1 TO R5 ; MOV #1,R1 ;START POSITION IN CHARACTER STRING MOV @R0,R2 ;END POSITION IN STRING ; 10$: CMP R2,R1 ;HAS REVERSING OPERATION OF STRING COMPLETED BLT 100$ ;J IF SEQUENCE FINISHED MOV R1,R3 ;START POSITION ADD R0,R3 ;OFFSET ADDRESS INTO CHARACTER STRING INC R3 ;ACTUAL CHARACTER ADDRESS ; MOV R2,R4 ;END POSITION ADD R0,R4 ;OFFSET POSITION INTO CHARACTER STRING INC R4 ;ACTUAL CHARACTER ADDRESS ; ;SWAP CHARACTERS ; MOVB @R3,R5 ;STORE LOW CHARACTER IN TEMP WORKSPACE MOVB @R4,@R3 ;STORE HI CHARACTER IN LOW POSITION MOVB R5,@R4 ;INTERCHANGE COMPLETE INC R1 ;STEP LOW POSITION TO END DEC R2 ;STEP HI POSITION TO START BR 10$ ;CONTINUE TILL ALL CHARACTERS REVERSED ; 100$: UNSAVE R1,R2,R3,R4,R5 ;RESTORE R5 TO R1 RETURN ;EXIT JOB DONE ; .END ;