240 likes | 652 Views
Assembly Lang. – Intel 8086 String [ Ch . 11 [ Marut ] Ch. 4 [ Brey ] ]. String Data Transfer Instructions The Direction Flag LODS Instructions STOS Instructions MOVS Instructions Few Examples Materials are from Dr. Sazzad , NSU Ch 11, Assembly Language Programming – by Charls Marut
E N D
Assembly Lang. – Intel 8086 String[Ch. 11 [Marut] Ch. 4 [Brey]] • String Data Transfer Instructions • The Direction Flag • LODS Instructions • STOS Instructions • MOVS Instructions • Few Examples • Materials are from Dr. Sazzad, NSU • Ch 11, Assembly Language Programming – by CharlsMarut • Section 4-4, Intel Microprocessors – by Brey
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. 3write 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
Read Example STRING1 DB ‘ABC’ MOV AX, @DATA MOV DS, AX LEA SI, STRING1 CLD LODSB LODSB
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 Read STRING1 DB ‘HELLO’ MOV AX, @DATA MOV ES, AX LEA DI, STRING1 CLD MOV AL, ‘A’ STOSB STOSB
MOVS Instructions • MOVS – move string from one memory location to other Table 4-13 : From Brey’s Book
Example Read .DATA STRING1 DB ‘HELLO’ STRING1 DB 5 DUP (?) MOV AX, @DATA MOV DS, AX MOV ES, AX LEA SI, STRING1 LEA DI, STRING2 CLD MOVSB MOVSB
Agenda • String Data Transfer Instructions • The Direction Flag • LODS Instructions • STOS Instructions • MOVS Instructions • More Examples Read
Concatenate Two Input StringsThen Display Display message 1 Read first string Display message 2 Read second string Concatenate the two strings Display the result 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 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