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

Explain the high level Language - computer programming, Explain the High Le...

Explain the High Level Language? The programming language such as FORTRAN, C, or Pascal that enables a programmer to write programs those are more or less independent of a parti

Big – endian and little- endian representations, Explain Big - Endian and L...

Explain Big - Endian and Little- Endian representations Ans: The Big- endian is used where lower byte addresses are used for the more significant bytes (leftmost bytes) of the

Challenges in changing information technology, Q: Challenges and Prospects ...

Q: Challenges and Prospects in Changing Information Technology? There is no doubt that information technology has made significant progress during the past two decades. Modern

Define the components of a process precedence sequence, Define the componen...

Define the component of a process precedence sequence? Ans. Process name, sequence operator and also concurrency operator components are process precedence sequence.

What is a piconet in a bluetooth context, Problem: (a) IEEE802.11 supp...

Problem: (a) IEEE802.11 supports two types of network architecture, describe these architectures with the support of diagrams detailing the network components. (b) The MAC

Define pvm library functions, Q. Define pvm library functions? int...

Q. Define pvm library functions? int info = pvm_freebuf( int bufid ) organizes of a message buffer. bufid message buffer identifier.  int pvm_getsbuf( void

Address translation - computer architecture, Address translation: ...

Address translation: Compiler time : If it is known in advance that a program will reside at a particular location of primary memory, and then the compiler can be told to

The values 15 and 11 can also be defined by variable, In the statement Writ...

In the statement Write:/15(10) lfa1-lifnr. The values 15 and 11 can also be defined by variable. No, the value of 11 nad 15 is not described by variable.

What are spa/gpa parameters (sap memory), What are SPA/GPA parameters (SAP ...

What are SPA/GPA parameters (SAP memory) SPA/GPA parameters are field values saved globally in memory.  There are two ways to use SPA/GPA parmeters: By setting field attrib

Illustrated three stages of data mining process, Illustrated three stages o...

Illustrated three stages of data mining process? Stage 1: Exploration: This stage generally starts along with data preparation that may involve cleaning data, selecting subse

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