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

Layout for the assumed penalty, Solve the following 8-department problem us...

Solve the following 8-department problem using the MIP method.  What is the resulting layout and flow-distance score?  Note that the aspect ratio of each department should be 2.

Explain about asynchronous message passing, Q. Explain about Asynchronous m...

Q. Explain about Asynchronous message passing? In Asynchronous message passing message transmitting and receiving aren't synchronized in space and time. The store and forward

Represent negative numbers in the computer system, Q. What are the values o...

Q. What are the values of x, y, and z. (1011.001101)2 = (x)10 = (y)8 = (z)16 Q. What are the various ways to represent Negative Numbers in the Computer system?

Demonstrate arc consistency, Demonstrate Arc consistency: To demonstra...

Demonstrate Arc consistency: To demonstrate the worth of performing an arc-consistency check before starting a serarch for a solution, we'll use an example from Barbara Smith'

Participate in grid computing, Different systems that can participate in gr...

Different systems that can participate in grid computing as platform are:  Windows 3.1, 95/98, NT, 2000 XP , DOS, OS/2, , supported by  Intel ( x86); Mac OS  A/UX (Unix)  sup

Explain about the logical devices, Explain about the Logical Devices ...

Explain about the Logical Devices Locator, to indicate a position and/or orientation Pick, to select a displayed entity To input a single value in the space of re

Prototyping and incremental development, a) Write  the main differences amo...

a) Write  the main differences among prototyping and incremental development.    b) Explain the commonality and main differences among agile approach and RUP.

Add multiple layout cells, Q. Add Multiple Layout Cells ? Next you will...

Q. Add Multiple Layout Cells ? Next you will add three layout cells below the logo cell you just created. Afterwards you will insert page's navigation buttons in these cells.

Evaluate bandwidth of disk drive, Q. Evaluate Bandwidth of disk drive? ...

Q. Evaluate Bandwidth of disk drive? Bandwidth:  Bandwidth can be measured in bytes per second. Sustained bandwidth is the average data rate at the time of a large transfer w

Explain the working of a 2-bit digital comparator, Explain the working of a...

Explain the working of a 2-bit digital comparator with the help of Truth Table. Ans. Digital comparator is a combinational circuit which compares two numbers, A and B; and

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