Home | | Microprocessors and Microcontrollers | Strings and String Handling Instructions in 8086 Microprocessor

Chapter: Microprocessor and Microcontroller - 8086 Microprocessor

Study Material, Lecturing Notes, Assignment, Reference, Wiki description explanation, brief detail

Strings and String Handling Instructions in 8086 Microprocessor

The 8086 microprocessor is equipped with special instructions to handle string operations. By string we mean a series of data words or bytes that reside in consecutive memory locations.

Strings and String Handling Instructions

 

The 8086 microprocessor is equipped with special instructions to handle string operations. By string we mean a series of data words or bytes that reside in consecutive memory locations. The string instructions of the 8086 permit a programmer to implement operations such as to move data from one block of memory to a block elsewhere in memory. A second type of operation that is easily performed is to scan a string and data elements stored in memory looking for a specific value. Other examples are to compare the elements and two strings together in order to determine whether they are the same or different.

 

ü Move String: MOV SB, MOV SW:

 

An element of the string specified by the source index (SI) register with respect to the current data segment (DS) register is moved to the location specified by the destination index (DI) register with respect to the current extra segment (ES) register. The move can be performed on a byte (MOV SB) or a word (MOV SW) of data. After the move is complete, the contents of both SI & DI are automatically incremented or decremented by 1 for a byte move and by 2 for a word move. Address pointers SI and DI increment or decrement depends on how the direction flag DF is set.

 

Example: Block move program using the move string instruction

MOV AX, DATA SEG ADDR

MOV DS, AX

MOV ES, AX

MOV SI, BLK 1 ADDR

MOV DI, BLK 2 ADDR

MOV CK, N

CDF; DF=0

NEXT: MOV SB

LOOP NEXT

HLT

 

ü Load and store strings: (LOD SB/LOD SW and STO SB/STO SW)

 

LOD SB: Loads a byte from a string in memory into AL. The address in SI is used relative to DS to determine the address of the memory location of the string element.

 

(AL) ¬ [(DS) + (SI)] (SI) ¬ (SI) + 1

 

LOD SW: The word string element at the physical address derived from DS and SI is to be loaded into AX. SI is automatically incremented by 2.

 

(AX) ¬ [(DS) + (SI)] (SI) ¬ (SI) + 2

 

STO SB: Stores a byte from AL into a string location in memory. This time the contents of ES and DI are used to form the address of the storage location in memory.

 

[(ES) + (DI)] ¬ (AL) (DI) ¬ (DI) + 1

 

STO SW: [(ES) + (DI)] ¬ (AX) (DI) ¬ (DI) + 2

Repeat String: REP

 

The basic string operations must be repeated to process arrays of data. This is done by inserting a repeat prefix before the instruction that is to be repeated. Prefix REP causes the basic string operation to be repeated until the contents of register CX become equal to zero. Each time the instruction is executed, it causes CX to be tested for zero, if CX is found to be nonzero it is decremented by 1 and the basic string operation is repeated.

 

Example: Clearing a block of memory by repeating STOSB MOV AX, 0

 

MOV ES, AX

MOV DI, A000

MOV CX, OF

CDF

 

REP STOSB NEXT:

 

The prefixes REPE and REPZ stand for same function. They are meant for use with the CMPS and SCAS instructions. With REPE/REPZ the basic compare or scan operation can be repeated as long as both the contents of CX are not equal to zero and zero flag is 1.

 

REPNE and REPNZ works similarly to REPE/REPZ except that now the operation is repeated as long as CX¹0 and ZF=0. Comparison or scanning is to be performed as long as the string elements are unequal (ZF=0) and the end of the string is not yet found (CX¹0).

 

ü Auto Indexing for String Instructions:

 

SI & DI addresses are either automatically incremented or decremented based on the setting of the direction flag DF.

 

When CLD (Clear Direction Flag) is executed DF=0 permits auto increment by 1. When STD (Set Direction Flag) is executed DF=1 permits auto decrement by 1.

 

Study Material, Lecturing Notes, Assignment, Reference, Wiki description explanation, brief detail


Copyright © 2018-2020 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.