Write a program for comparing two strings, Computer Engineering

Assignment Help:

Q. Write a program for comparing two strings?

Let's write a program for comparing two strings. Determine the following piece of code that has been written in C to compare two strings. Let's presume that 'str1' and 'str2' are two strings which are initialised by some values and 'ind' is index for these character strings:

for (ind = 0; ( (ind <9) and (str1[ind] = = str2[ind]) ), ind + +)

Intermediate code in assembly language produced by a non-optimising compiler for the above piece may appear like:

MOV IND, 00; ind: = 0

L3:                               CMP IND, 08; Ind < 9

                                    JG L1   ; not so; skip

                                    LEA AX, STR1; offset of str1 in AX register

                                    MOV BX, IND; it uses a register for indexing into 

                                                                        ; The array

LEA CX, STR2; str2 in CX

                                    MOV DL, BYTE PTR CX [BX]

                                    CMP DL, BYTE PTR AX [BX]; str1 [Ind] = str2 [Ind]

                                    JNE L1    ; no, skip

                                    MOV IND, BX 

                                    ADD IND, 01

L2:                               JMP L3    ; loop back

L1:

 

What we find in above code: a large code which could have been improved further if 8086 string instructions would have been used.

; Program: Matching two strings of similar length stored in memory locations.

; REGISTERS: Uses CS, DS, ES, AX, DX, CX, SI, DI

DATA SEGMENT

            PASSWORD              DB                  'FAILSAFE'              ; source string

            DESTSTR                   DB                  'FEELSAFE'              ; destination string

            MESSAGE                 DB                  'String are equal $'

DATA ENDS

CODE SEGMENT

                        ASSUME CS: CODE, DS: DATA, ES: DATA

                                    MOV AX, DATA

                                    MOV DS, AX   ; Initialise data segment register

                                    MOV ES, AX   ; Initialise extra segment register

; As destination string is considered to be in extra segment. Please note that ES is also 

; initialised to the same segment as of DS.

LEA SI, PASSWORD; Load source pointer

                                    LEA DI, DESTSTR; Load destination pointer

                                    MOV CX, 08   ; Load counter with string length

                                    CLD   ; Clear direction flag so that comparison is

                                                ; done in forward direction.

EPE CMPSB; Compare the two string byte by byte

                                    JNE NOTEQUAL; If not equal, jump to NOTEQUAL

                                    MOV AH, 09; else display message 

                                    MOV DX, OFFSET MESSAGE;

                                    INT 21h; display the message

NOTEQUAL:             MOV AX, 4C00h; interrupt function to halt

                                    INT 21h

CODE ENDS

END


Related Discussions:- Write a program for comparing two strings

Determine the output of T-flipflops in cascade, If  the input to T-flipflop...

If  the input to T-flipflop is 100 Hz signal, the final output of the three T-flipflops in cascade is ? Ans. The  final  output  of  the  three  T-flip-flops in cascade is 12.5 H

What is importance of ras and cas in sdram, What is importance of RAS and C...

What is importance of RAS and CAS in SDRAM? SDRAM acquires its address command into two address words. This uses a multiplex scheme to save input pins. The initial address word

Determine the frequency of the input signal, An eight stage ripple counter ...

An eight stage ripple counter uses a flip-flop with propagation delay of 75 nanoseconds.  The pulse width of the strobe is 50ns.  The frequency of the input signal which can be use

Offset litho duplicating of information, Offset Litho Duplicating Equi...

Offset Litho Duplicating Equipment Required Duplicator Plate-making equipment (not always, essential), e.g. printing box and processing unit Plates Paper Ink

Shift microoperations, Shift Microoperations Shift microoperation can b...

Shift Microoperations Shift microoperation can be used for serial transfer of the data. They are used generally with arithmetic, logic and other data-processing operations. The

Define mapping and list mapping procedure, Define Mapping and List  mappin...

Define Mapping and List  mapping procedure? The transformation of data from main memory to cache memory is known as an Mapping. Associative mapping Direct mapping

Networking, compare 2g , 3g , and 4g also with advantage of 3g and 4g.

compare 2g , 3g , and 4g also with advantage of 3g and 4g.

Error handling in hard disk, Error handling in Hard disk in computer archit...

Error handling in Hard disk in computer architecture : Modern drives also make widespread use of Error Correcting Codes (ECCs), specifically Reed-Solomon error correction.

Prove the equations using the boolean algebraic theorems, Prove the equatio...

Prove the equations A + A‾ .B + A.B‾ = A + B using the Boolean algebraic theorems ? Ans. The equation is A + A‾.B + A.B‾ = A + B L.H.S. = A + A‾ .B + A.B‾ = (A + A.B‾) + A‾.B

What is a cooperation model, What is A cooperation model A cooperation ...

What is A cooperation model A cooperation model defines the way interdependencies are established by cooperative interactions. We recognize two basic roles services can play: c

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd