0% found this document useful (0 votes)
5 views

String

Uploaded by

dharani
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

String

Uploaded by

dharani
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 1

String Copy INCREMENT_LENGTH:

ORG 0H ; Origin INC R0 ; Increment length


MOV DPTR, #SRC ; Load the address of the source string into INC DPTR ; Move to the next character
DPTR SJMP LENGTH_LOOP ; Continue loop
MOV R0, #DST ; Load the address of the destination string into
R0 END_LENGTH:
COPY_LOOP: ; Start of copy loop ; Length of the string is now in R0
MOV A, @DPTR ; Move byte from source string to accumulator SJMP $ ; Infinite loop to halt the program
MOV @R0, A ; Move byte from accumulator to destination STRING: DB 'HELLO$', 0
string END
INC DPTR ; Increment source address
INC R0 ; Increment destination address String Reversal
CJNE A, #0, COPY_LOOP ; Continue until NULL character (0) ORG 0H ; Origin
is encountered MOV DPTR, #STRING ; Load the address of the string into DPTR
SJMP $ ; Infinite loop to halt the program ; Find the end of the string
SRC: DB 'HELLO$', 0 MOV R0, DPTR
DST: DB 20 DUP('$') ; Reserve 20 bytes for the destination string FIND_END:
END MOV A, @R0
CJNE A, #0, INCREMENT_END
String Comparison SJMP END_FOUND
ORG 0H ; Origin INCREMENT_END:
MOV DPTR, #STR1 ; Load the address of the first string into INC R0
DPTR SJMP FIND_END
MOV R0, #STR2 ; Load the address of the second string into R0 END_FOUND:
COMPARE_LOOP: DEC R0 ; Point to the last character of the string (excluding
MOV A, @DPTR ; Load byte from first string into accumulator NULL)
CJNE A, @R0, NOT_EQUAL ; If not equal, jump to MOV R1, DPTR ; Save the start of the string
NOT_EQUAL MOV R2, R0 ; Save the end of the string
CJNE A, #0, COMPARE_LOOP ; Continue loop until end of REVERSE_LOOP:
string (NULL character) MOV A, @R1 ; Load character from start
MOV B, @R2 ; Load character from end
; If we reach here, strings are equal MOV @R1, B ; Swap characters
; Add code for equal strings MOV @R2, A
SJMP $ ; Infinite loop to halt the program INC R1 ; Move start pointer forward
NOT_EQUAL: DEC R2 ; Move end pointer backward
; Add code for not equal strings CJNE R1, R2, REVERSE_LOOP ; Continue loop until pointers
SJMP $ ; Infinite loop to halt the program meet or cross
STR1: DB 'HELLO$', 0 MOV @R1, #0 ; Null-terminate the reversed string
STR2: DB 'HELLO$', 0 SJMP $ ; Infinite loop to halt the program
END STRING: DB 'HELLO$', 0
END
String Length
ORG 0H ; Origin
MOV DPTR, #STRING ; Load the address of the string into DPTR
MOV R0, #0 ; Initialize length to 0
LENGTH_LOOP:
MOV A, @DPTR ; Load byte from string into accumulator
CJNE A, #0, INCREMENT_LENGTH ; If not NULL, increment
length
SJMP END_LENGTH ; End of string, jump to end

You might also like