Assembly Lang Intel 8086 String Ch 11 Marut
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 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 mem 2 mem 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/DSdata/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 STRING 1 DB MOV LEA CLD LODSB ‘ABC’ AX, @DATA DS, AX SI, STRING 1 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
Read Example STRING 1 DB MOV LEA CLD MOV STOSB ‘HELLO’ AX, @DATA ES, AX DI, STRING 1 AL, ‘A’
MOVS Instructions • MOVS – move string from one memory location to other Table 4 -13 : From Brey’s Book
Example. DATA STRING 1 DB ‘HELLO’ STRING 1 DB 5 DUP (? ) MOV MOV AX, @DATA DS, AX ES, AX LEA SI, STRING 1 LEA DI, STRING 2 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 Display message 1 Input String 2: World! Display message 2 Read first string Read second string Concatenate the two strings Concatenated String: Hello World! 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
- Slides: 16