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

Describe about physical systems, Q. Describe about Physical Systems? Ph...

Q. Describe about Physical Systems? Physical Systems are tangible entities which may be dynamic or static.   Computer Systems, Buildings,Vehicles etc. are illustrations of p

Explain the working of a two input EX-OR gate, With relevant logic diagram ...

With relevant logic diagram and truth table explain the working of a two input EX-OR gate. Ans. 2-Input EX-OR Gate: An EX-OR or Exclusive gate recognizes words that have an od

Dfa, design a dfa which accept all the string over a and b ending with ab o...

design a dfa which accept all the string over a and b ending with ab or ba

What is object orientation, What is object orientation? Object orientat...

What is object orientation? Object orientation means that we classify software as a collection of discrete objects that incorporate with together DS and behaviour. Four aspe

What are types of applets, There are two different parts of applets. Truste...

There are two different parts of applets. Trusted Applets and Untrusted applets. Trusted Applets are applets with predefined security and Untrusted Applets are applets without any

Chains of inference, Chains of Inference: Now we have to look at how t...

Chains of Inference: Now we have to look at how to get an agent to prove a given theorem using various search strategies? Thus we have noted in previous lectures that, there i

What is the difference between the c#.net and vb.net, What is the differenc...

What is the difference between the C#.NET and VB.NET? VB.NET - It don't have the XML Documentation. - It don't have the Operator Overloading. - It dont't have the P

Explain priority encoder with an example, Explain Priority encoder with an ...

Explain Priority encoder with an example. Ans. Priority encoder- Basically an encoder is a combinational circuit which performs the inverse operation of a decoder. The inp

How the at-user command serves mainly in lists, How the at-user command ser...

How the at-user command serves mainly in lists? The AT USER-COMMAND event serves mostly to handle own function codes.  In this case, you should make an individual interface wit

Adding xml files to your page, Step 1: Choose File -> Import XML into Templ...

Step 1: Choose File -> Import XML into Template Step 2: Select the XML file & click Open When an XML file is imported, Dreamweaver merges XML content in Template, which is be

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