Topic – string – Ch. 11 [Marut] Ch. 4 [Brey] String Data Transfer Instructions – The Direction...
-
Upload
priscilla-lang -
Category
Documents
-
view
215 -
download
0
Transcript of Topic – string – Ch. 11 [Marut] Ch. 4 [Brey] String Data Transfer Instructions – The Direction...
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. 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
Example
STRING1 DB ‘ABC’
MOV AX, @DATAMOV DS, AXLEA SI, STRING1CLDLODSBLODSB
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 AX, @DATAMOV ES, AXLEA DI, STRING1CLDMOV AL, ‘A’STOSBSTOSB
Read
MOVS Instructions
• MOVS – move string from one memory location to other
Table 4-13 : From Brey’s Book
Example
.DATASTRING1 DB ‘HELLO’STRING1 DB 5 DUP (?)
MOV AX, @DATAMOV DS, AXMOV ES, AX
LEA SI, STRING1LEA DI, STRING2CLDMOVSBMOVSB
Read
Agenda
• String Data Transfer Instructions– The Direction Flag– LODS Instructions– STOS Instructions– MOVS Instructions
• More Examples Read
Concatenate Two Input StringsThen 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 1Read first stringDisplay message 2Read second stringConcatenate the two stringsDisplay the result
Display message 1Read first string
Display message 1Read first stringDisplay message 2Read second stringConcatenate the two stringsDisplay the result
Display message 2Read second string
Display message 1Read first stringDisplay message 2Read second stringConcatenate the two stringsDisplay the result
Concatenate the two stringsDisplay the result
References
materials are from Dr. Sazzad, NSU• Ch 11, Assembly Language Programming – by Charls
Marut• Section 4-4, Intel Microprocessors – by Brey