.title trim ; ;Trims both leading and trailing blanks ; ;Register usage ; R0 forward string scanner ; R1 read string scanner ; R2 string pointer ; trim:: mov (sp)+,r1 mov (sp),r0 ;string mov r1,(sp) mov r2,-(sp) ; mov r0,r1 ;remember start 1$: cmpb (r0)+,#' ;skip leading blanks beq 1$ ; dec r0 2$: cmpb (r0),#' ;scan for trailing blanks beq 3$ movb (r0)+,(r1)+ ;keep going bne 2$ br 6$ ; 3$: mov r1,r2 ;could be trailing blanks 4$: movb (r0),(r1)+ ;keep going just in case beq 5$ cmpb (r0)+,#' beq 4$ br 2$ ;not trailnig blank ; 5$: clrb (r2) ;mark new end of string 6$: mov (sp)+,r2 rts pc .end