Lecture 6
Presented ByDr. Shazzad Hosain
Asst. Prof. EECS, NSU
Agenda
• String Data Transfer Instructions– The Direction Flag– LODS Instructions– STOS Instructions– MOVS Instructions– INS and OUTS Instructions
• More Examples
String Data Transfers
• Five Instructions– LODS, STOS, MOVS, INS and OUTS
• Each instruction allows data transfer either a single byte, word or double word
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)• STD instruction sets the D flag (D = 1)• 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, AX or EAX with data indexed by SI register
• LODSB – load string byte
Table 4-10: from Brey’s book
Example
STRING1 DB ‘ABC’
MOV AX, @DATAMOV DS, AXLEA SI, STRING1CLDLODSBLODSB
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
REP (Repeat Prefix))
• REP is used to execute string instructions repeatedly by CX times.
• REP automatically decrements CX by 1 • REP works for any string instructions except
LODS instruction
Example : Clear the video text display1 2 3 80****
12
25
***
543210
a b c
07H
07H
07H
Video display
Text memory
c
b
a
20H
20H
20H B800H
Example 4-5: From Brey’s Book
MOVS Instructions
• MOVSB – move string byte 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
Example: Scroll Up One Line1 2 3 80****
12
25
***
543210
Video display
Text memoryB800H
Example 4-6: From Brey’s Book
160**
**SI
DI
INS Instructions
• INSB – Input String Byte, from I/O device to memory location
Table 4-14: From Brey’s Book
Example
• Read 50 bytes of data from an I/O device whose address in 03ACH and store the data in LISTS array
Example 4-7: From Brey’s Book
OUTS Instructions
• OUTSB – Output String Byte, from string memory location to I/O device
Table 4-15: From Brey’s Book
Example
• Transfer data form memory array (ARRAY) to an I/O device at I/O address 3ACH
Example 4-8: From Brey’s Book
Agenda
• String Data Transfer Instructions– The Direction Flag– LODS Instructions– STOS Instructions– MOVS Instructions– INS and OUTS Instructions
• More Examples
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
Mid Term, Fall 2010October 30, SaturdayAt 9:00 AM to 10:30
NAC 311
References
• Ch 11, Assembly Language Programming – by Charls Marut
• Section 4-4, Intel Microprocessors – by Brey