Topic – string – Ch. 11 [Marut] Ch. 4 [Brey] String Data Transfer Instructions – The Direction Flag – LODS Instructions – STOS Instructions – MOVS Instructions Few Examples
String Data Transfers 8086 – string a byte or word array What is array? Need – register indirect addressing mode Allow mem2mem operations Five Instructions – LODS, STOS, MOVS, INS and OUTS Each instruction allows data transfer either a single byte, word or double word
Flags - recap 6 status flags 3 control flags – to control Processor’s ops. Direction flag [DF]: to determine the direction in which string operations will proceed. By 2 index registers – Si and DI
Recap – ch. 3 write on board SP, BP, SI and DI – point to [contain the offset addresses of] mem locations. SP – stack pointer BP – base pointer SI – source index register is used to point to mem locations in the data segment addressed by DS [DS is one of the Segment registers – CS-code/DS- data/SS-stack/ES-extra segment] DI – Destination index – same as DI. Esp. for string ops that use DI to access memory locations addressed by ES.
The Direction Flag, DF DF = 0, auto-increment mode of SI, DI DF = 1, auto-decrement mode of SI, DI CLD instruction clears the D flag (D = 0) – clears direction flag STD instruction sets the D flag (D = 1) – sets DF CLD, STD have no effect on other flags SI (Source Index) points to DS (Data Segment) i.e., DS:[SI] DI (Destination Index) points to ES (Extra Segment) i.e., ES:[DI]
LODS Instructions LODS instructions loads AL [with a Byte], AX [with a Word] or EAX [with a Boubleword] with data indexed by SI register [EAX for 80386/+] LODSB – load string byte LODSW – load string doubleword Table 4-10: from Brey’s book
Example STRING1 DB‘ABC’ MOV MOV DS, AX LEA SI, STRING1 CLD LODSB Read
STOS Instructions STOS instructions stores data form AL, AX or EAX to memory indexed by DI register STOSB – store string byte Table 4-11: from Brey’s book
Example STRING1 DB‘HELLO’ MOV MOV ES, AX LEA DI, STRING1 CLD MOV AL, ‘A’ STOSB Read
MOVS Instructions MOVS – move string from one memory location to other Table 4-13 : From Brey’s Book
Example.DATA STRING1DB ‘HELLO’ STRING1 DB 5 DUP (?) MOV MOV DS, AX MOV ES, AX LEASI, STRING1 LEADI, STRING2 CLD MOVSB Read
Agenda String Data Transfer Instructions – The Direction Flag – LODS Instructions – STOS Instructions – MOVS Instructions More Examples Read
Concatenate Two Input Strings Then Display Input String 1: Hello Input String 2: World! Concatenated String: Hello World! Display message 1 Read first string Display message 2 Read second string Concatenate the two strings Display the result
Display message 1 Read first string Display message 2 Read second string Concatenate the two strings Display the result Display message 1 Read first string
Display message 1 Read first string Display message 2 Read second string Concatenate the two strings Display the result Display message 2 Read second string
Display message 1 Read first string Display message 2 Read second string Concatenate the two strings Display the result Concatenate the two strings Display the result
References materials are from Dr. Sazzad, NSU Ch 11, Assembly Language Programming – by Charls Marut Section 4-4, Intel Microprocessors – by Brey