240 likes | 509 Views
Lecture 6. Presented By Dr. 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
E N D
Lecture 6 Presented By Dr. ShazzadHosain 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, @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 STRING1 DB ‘HELLO’ MOV AX, @DATA MOV ES, AX LEA DI, STRING1 CLD MOV AL, ‘A’ STOSB STOSB
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 display 1 2 3 80 **** a b c 1 2 * * * 25 Video display 5 4 3 2 1 0 c b a 20H 20H 20H 07H 07H 07H Example 4-5: From Brey’s Book B800H Text memory
MOVS Instructions • MOVSB – move string byte from one memory location to other Table 4-13 : From Brey’s Book
Example .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
Example: Scroll Up One Line 1 2 3 80 **** 1 2 * * * 25 Video display * * SI 160 * * 5 4 3 2 1 0 Example 4-6: From Brey’s Book DI B800H Text memory
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 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
Mid Term, Fall 2010October 30, SaturdayAt 9:00 AM to 10:30NAC 311
References • Ch 11, Assembly Language Programming – by CharlsMarut • Section 4-4, Intel Microprocessors – by Brey