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 jmx concepts and architecture, MX is conceptually easy, yet bears ...

MX is conceptually easy, yet bears the fruit of years of domain experience and research. In a nutshell, JMX describes a standard means for applications to expose management functio

How the characters used in operand data type, Q. How the Characters used in...

Q. How the Characters used in operand data type? A common form of data is character or text strings. Characters are signified in numeric form mostly in ASCII (American Standard

Basic idea - learning decision trees, Basic idea: However in the above...

Basic idea: However in the above decision of tree which it is significant that there the "parents visiting" node came on the top of the tree. Whether we don't know exactly the

Explain new services of cpu based exchange, Explain new services of  CPU B...

Explain new services of  CPU Based Exchange. These new services are termed as supplementary services and several of the prominent ones are given below as:  Category 1:

Difference among msgbox statement and msgboxq function, MsgBox is a built i...

MsgBox is a built in VB function which shows a Message Box and MsgBoxQ is a function definite by the user.

Explain importance of modems used in data transfer, Explain importance of ...

Explain importance of modems used in data transfer and list some of the V-series recommendations. The series also describes a variety of DCEs using different type modulatio

Argument be passed to a subroutine in programming, How many ways can an arg...

How many ways can an argument be passed to a subroutine in programming? Ans)  An argument can be passed in two way in a programming language. They are Pass by Value and Passi

Find the generating function, Find the generating function to denote the nu...

Find the generating function to denote the number of ways the sum 9 can be acquired while 2 distinguishable fair dice are tossed and the first shows an even number and the second s

Effect of is on humans - information system, Effect of IS on Humans - Infor...

Effect of IS on Humans - Information System We have concentrated in this chapter on the ways that IS has evolved making it more useful and more user-friendly. This proliferat

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