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

Advanced topics of html, HTML is made up of many elements, a lot of them ar...

HTML is made up of many elements, a lot of them are overlooked. Though you can develop a Website with the basic knowledge of HTML, to take benefit of many of the advanced features,

Show how pages will be allocated using first-in-first-out, Consider the fol...

Consider the following page reference and reference time strings for a program: Page reference string: 5,4,3,2,1,4,3,5,4,3,2,1,5,..... Show how pages will be allocated using t

Difference between classical ai and statistical ai, Statistical AI, arising...

Statistical AI, arising from machine learning, tends to be more concerned with "inductive" thought: given a set of patterns, make the trend. Classical AI, on the other hand, is mor

Flip flop., the counter shown Q2Q1Q0=000 The status of Q2Q1Q0 after the pul...

the counter shown Q2Q1Q0=000 The status of Q2Q1Q0 after the pulse

Describe the fundamental characteristics of antennas, Question 1: (a) ...

Question 1: (a) Describe the two fundamental characteristics of antennas explaining in detail how it affects the security of wireless networks. (b) What is a wireless cli

Distinguish between ROM, Distinguish between ROM, PROM, EPROM, EEPROM. ...

Distinguish between ROM, PROM, EPROM, EEPROM. Ans: ROM: It also called Read Only Memory is a Permanent Memory. The data is permanently stored and cannot be changed in Perm

How will you reuse a plan, How will you reuse a plan? Reuse is an benef...

How will you reuse a plan? Reuse is an benefit of OO technology. Two aspects of reuse: Using existing things and making reusable new things It is simpler to reus

What is stack and register manipulation, Q. What is Stack and register mani...

Q. What is Stack and register manipulation? Stack and register manipulation: If we create stacks, stack instructions prove to be useful. LOAD IMMEDIATE is a good illustration

Determine the advantages of sixth generation computers, Determine the advan...

Determine the advantages of sixth generation computers One of the major dramatic changes in sixth generation will be the explosive growth of wide area networking. Network bandw

Explain the test instruction, Explain the TEST instruction TEST instru...

Explain the TEST instruction TEST instruction performs the AND operation. The difference is that AND instruction changes the destination operand whereas TEST instruction doesn

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