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

Write a cgi program that keeps a list of computers, Write a CGI program tha...

Write a CGI program that keeps a list of computers that have contacted the server. If comp1 is contacting first time it will display the message: "This is the first contact fr

What is the main difference between asp and asp.net, What is the Main diffe...

What is the Main difference between ASP and ASP.NET ?   ASP contains scripts which are not compiled while in ASP.net the code is compiled.

List the major components of the keyboard, List the major components of the...

List the major components of the keyboard/Display interface. a. Keyboard section b. CPU interface section c. Display section d. Scan section

Design a 8 to 1 multiplexer using the fourvariable function, Design a 8 to ...

Design a 8 to 1 multiplexer by using the fourvariable function given by F(A, B, C, D) = ∑ m(0,1,3,4,8,9,15). Ans. Design of 8 to 1 Multiplexer: It is a four-variable function a

Design a circuit which computes the square of a number, Design a circuit wh...

Design a circuit which computes the square of a number? This should not make use of any multiplier circuits. This should use Multiplexers and some other logic as: 1^2=0+1=1

How do active web pages work, How do active web pages work? Describe with a...

How do active web pages work? Describe with a small example. Active Web Pages: An active document is not completely specified through the server. Instead an active documen

What is a virtual address, Q. What is a virtual address? Von Neumann ha...

Q. What is a virtual address? Von Neumann had suggested that execution of a program is possible only if program and data are residing in memory. In such a condition program len

Automatic typewriter in information distribution, Automatic typewriter : I...

Automatic typewriter : It is a power-driven machine, which automatically types a standard pro forma from a previously punched or stencilled master. When the master is placed on th

Additions of two numbers by using 2’s complement, Add -20 to +26 by using 2...

Add -20 to +26 by using 2's complement ? Ans. Firstly convert the both numbers 20 and 26 in its 8-bit binary equivalent and determine the 2's complement of 20, after that add -

Cache simulater, Requirements You are required to program (in a high l...

Requirements You are required to program (in a high level language such as C, C++, Java) and implement a cache simulator which will have the following inputs and outputs:-

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