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

What is data hazard in pipelining, What is data hazard in pipelining? What ...

What is data hazard in pipelining? What are the solutions? A data hazard is a situation in which  the pipeline is stalled due to the data to be operated on are delayed for some

Authorization bypass, Authorization Bypass is a frighteningly easy process ...

Authorization Bypass is a frighteningly easy process which can be employed with poorly designed applications or content management frameworks. You know how it is... you run a small

What is reentrant tasks and functions, What is reentrant tasks and function...

What is reentrant tasks and functions Tasks and functions without optional keyword automatic are static , with all declared items being statically allocated. These items will b

Capacity and performance of storage - computer architecture, Capacity: ...

Capacity: Raw capacity Total amount of stored information that a medium or storage device can hold is expressed as a quantity of bytes and bits (for example 10.4 megabyte

Intentional hacking helps in maintaining better security, Intentional hacki...

Intentional hacking helps in maintaining better security Several companies employ professionals as security specialists whose basic job is to detect and cover loopholes in t

Discuss about the electronic computer, Discuss about the Electronic compute...

Discuss about the Electronic computer The first general function programmable electronic computer was the Electronic Numerical Integrator and Computer (ENIAC), built by John V

Name some multimedia applications, Illustrate what are the Multimedia appli...

Illustrate what are the Multimedia applications Multimedia comprise the use of a computer to present: - Text - Video - Graphics - Sound - Animation In an inte

What is recursion, What is recursion?  A recursive procedure should have tw...

What is recursion?  A recursive procedure should have two properties.  What are they? Recursion means function call itself repeatedly.         Properties : (1) There

State and describe the iros subsystems, Question: (a) iRoom was constru...

Question: (a) iRoom was constructed based on the guiding principles listed below, discuss on each one of those principles with respect to why the specific principle was adopted

What are two methods of modifying sap standard tables, What are two methods...

What are two methods of modifying SAP standard tables? Append Structures and Customizing Includes.

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