A microprocessor is an electronic component that is used by a computer to do its work. It is a central processing unit on a single integrated circuit chip containing millions of very small components including transistors, resistors, and diodes that work together. Some microprocessors in the 20th century required several chips. Microprocessors help to do everything from controlling elevators to searching the Web. Everything a computer does is described by instructions of computer programs, and microprocessors carry out these instructions many millions of times a second. [1]
Microprocessors were invented in the 1970s for use in embedded systems. The majority are still used that way, in such things as mobile phones, cars, military weapons, and home appliances. Some microprocessors are microcontrollers, so small and inexpensive that they are used to control very simple products like flashlights and greeting cards that play music when you open them. A few especially powerful microprocessors are used in personal computers.
1. String Manipulation Instructions
ā These are the instructions used for strings for
string movement, Load, Store, Comparison and
Scan.
ā A string is a series of bytes or a series of words
in sequential memory locations.
ā A āBā in the instruction mnemonic is used to
specifically indicate that a string of bytes is to
be acted upon.
ā A āWā in the instruction mnemonic is used to
specifically indicate that a string of words is to
be acted upon.
2. MOVS/MOVSB/MOVSW
Syntax :-- MOVS destination, source
MOVSB
MOVSW
ā¢ The MOVS instruction is used to transfer a byte
or a word from the source string to the destination
string.
ā¢The source must be in the data segment and the
destination in the extra segment.
ā¢ The offset of the source byte or a word must be
placed in SI register, which is represented as DS:SI
and the offset of the destination byte or a word
must be placed in DI register, which is represented
as ES:DI
3. MOVS/MOVSB/MOVSW (contd..)
ā¢On the execution of the instruction, SI and DI are
automatically adjusted by one to the next
element of the source and destination.
ā¢If the Direction Flag is reset (DF = 0), the
registers SI and DI will be incremented by one for
the byte movement and incremented by two for
the word movement.
ā¢If the Direction Flag is set (DF = 1), the registers
SI and DI will be decremented by one for the byte
movement and decremented by two for the word
movement.
4. MOVS/MOVSB/MOVSW (contd..)
ā¢The DS:SI and ES:DI register must be loaded prior
to the execution of the MOVS instruction.
ā¢MOVSB and MOVSW are the implicit instructions
to move a byte or word string .
ā¢The instruction MOVSB is used to transfer a byte
from the source to destination and the
instruction MOVSW is used to transfer a word
from the source to destination.
ā¢In multiple byte or word moves, the count must
be loaded in CX register which functions as a
counter.
5. ā¢ Operation Performed :--
ā¢ ES:[DI] ļ DS:[SI]
ā¢ If a byte movement,
āFor DF =0, SI ļ SI +1 & DI ļ DI +1
āFor DF =1, SI ļ SI -1 & DI ļ DI - 1
ā¢ If a word movement,
āFor DF =0, SI ļ SI +2 & DI ļ DI +2
āFor DF =1, SI ļ SI -2 & DI ļ DI - 2
MOVS/MOVSB/MOVSW (contd..)
6. MOVS D_STRING, S_STRINGMOVSB ; moves a byteMOVSW ; moves a word
ā¢ Examples :--
MOV AX, DATA ; initialize DS and ES
MOV DS,AX
MOV ES,AX
CLD ; Clear DF for incrementing
SI and DI
LEA SI, S_STRING ; initialize SI & DI
LEA DI, D_STRING
MOVS/MOVSB/MOVSW (contd..)
7. LODS/LODSB/LODSW
Syntax :-- LODS source
LODSB
LODSW
ā¢ The LODS instruction is used to transfer a
byte or a word from the source string pointed
by SI in DS to AL for byte or AX for word
ā¢The offset of the source byte or a word must
be placed in SI register, which is represented as
DS:SI
8. LODS/LODSB/LODSW (contd..)
ā¢On the execution of the instruction, SI is
automatically adjusted by one to the next
element of the source and destination.
ā¢If the Direction Flag is reset (DF = 0), the
registers SI will be incremented by one for the
byte movement and incremented by two for the
word movement.
ā¢If the Direction Flag is set (DF = 1), the registers
SI will be decremented by one for the byte
movement and decremented by two for the word
movement.
9. LODS/LODSB/LODSW (contd..)
ā¢On the execution of the instruction, SI is
automatically adjusted by one to the next
element of the source and destination.
ā¢If the Direction Flag is reset (DF = 0), the register
SI will be incremented by one for the byte
movement and incremented by two for the word
movement.
ā¢If the Direction Flag is set (DF = 1), the register SI
will be decremented by one for the byte
movement and decremented by two for the word
movement.
10. ā¢ Operation Performed :--
ā¢ If a byte movement,
āAL ļ DS:[SI]
āFor DF =0, SI ļ SI +1
āFor DF =1, SI ļ SI -1
ā¢ If a word movement,
āAX ļ DS:[SI]
āFor DF =0, SI ļ SI +2
āFor DF =1, SI ļ SI -2
LODS/LODSB/LODSW (contd..)
11. LODSW ; LOADS a word to AXLODS S_STRINGLODSB ; loads a byte to AL
ā¢ Examples :--
MOV AX, DATA ; initialize DS and ES
MOV DS,AX
CLD ; DF =0 for Incrementing
SI
LEA SI, S_STRING ; initialize SI
LODS/LODSB/LODSW (contd..)
12. STOS/STOSB/STOSW
Syntax :-- STOS destination
STOSB
STOSW
ā¢ The LODS instruction is used to transfer a
byte or a word from AL for byte or AX for word
to the destination string pointed by DI in ES.
ā¢The offset of the destination byte or a word
must be placed in DI register, which is
represented as ES:DI
13. STOS/STOSB/STOSW (contd..)
ā¢In the STOS instruction, the destination must be
declared as either DB or DW.
ā¢STOSB and STOSW are the implicit instructions
to load a byte or word string .
ā¢The instruction STOSB is used to store a byte
from the source AL to destination and the
instruction STOSW is used to store a word from
the source AX to destination.
ā¢In multiple byte or word moves, the count must
be loaded in CX register which functions as a
counter.
14. STOS/STOSB/STOSW (contd..)
ā¢On the execution of the instruction, DI is
automatically adjusted by one to the next
element of the destination.
ā¢If the Direction Flag is reset (DF = 0), the register
DI will be incremented by one for the byte
movement and incremented by two for the word
movement.
ā¢If the Direction Flag is set (DF = 1), the register
DI will be decremented by one for the byte
movement and decremented by two for the word
movement.
15. ā¢ Operation Performed :--
ā¢ If a byte movement,
āES:[DI] ļAL
āFor DF =0, DI ļ DI +1
āFor DF =1, DI ļ DI -1
ā¢ If a word movement,
āES:[DI] ļ AX
āFor DF =0, DI ļ DI +2
āFor DF =1, DI ļ DI -2
STOS/STOSB/STOSW (contd..)
16. STOSB ; Stores byte from AL to
destination
STOS D_STRING ; Stores a byte or word in
AL or AX dep on D_string
to D_string
ā¢ Examples :--
MOV AX, DATA ; initialize ES
MOV ES,AX
CLD ; DF =0 for Incrementing
SI
LEA DI, D_STRING ; initialize DI
STOSW ; Stores a word from AX to
destination
STOS/STOSB/STOSW (contd..)
17. CMPS/CMPSB/CMPSW
Syntax :-- CMPS destination, source
CMPSB
CMPSW
ā¢ The CMPS instruction is used to compare a byte
or a word in the source string with a byte or a
word in the destination string.
ā¢The source must be in the data segment and the
destination in the extra segment.
ā¢ The offset of the source byte or a word must be
placed in SI register, which is represented as DS:SI
and the offset of the destination byte or a word
must be placed in DI register, which is represented
as ES:DI
18. CMPS/CMPSB/CMPSW (contd..)
ā¢On the execution of the instruction, SI and DI are
automatically adjusted by one to the next
element of the source and destination.
ā¢If the Direction Flag is reset (DF = 0), the
registers SI and DI will be incremented by one for
the byte comparison and incremented by two for
the word comparison.
ā¢If the Direction Flag is set (DF = 1), the registers
SI and DI will be decremented by one for the byte
comparison and decremented by two for the
word comparison
19. CMPS/CMPSB/CMPSW (contd..)
ā¢The DS:SI and ES:DI register must be loaded prior
to the execution of the CMPS instruction.
ā¢CMPSB and CMPSW are the implicit instructions
to move a byte or word string .
ā¢The instruction CMPSB is used to compare a
byte from the source with destination and the
instruction CMPSW is used to compare a word in
the source with destination.
ā¢In multiple byte or word comparison, the count
must be loaded in CX register which functions as
a counter.
ā¢All conditional flags are affected
20. ā¢ Operation Performed :--
ā¢ If dest string > source string then
CF =0, ZF = 0, SF = 0
ā¢ If dest string < source string then
CF =1, ZF = 0, SF = 1
ā¢ If dest string = source string then
CF =0, ZF = 1, SF = 0
ā¢ If a byte comparison,
ā For DF =0, SI ļ SI +1 & DI ļ DI +1
ā For DF =1, SI ļ SI -1 & DI ļ DI - 1
ā¢ If a word comparison,
ā For DF =0, SI ļ SI +2 & DI ļ DI +2
ā For DF =1, SI ļ SI -2 & DI ļ DI - 2
CMPS/CMPSB/CMPSW (contd..)
21. CMPSW ; compares a wordCMPS D_STRING, S_STRINGCMPSB ; compares a byte
ā¢ Examples :--
MOV AX, DATA ; initialize DS and ES
MOV DS,AX
MOV ES,AX
CLD ; Clear DF for incrementing
SI and DI
LEA SI, S_STRING ; initialize SI & DI
LEA DI, D_STRING
CMPS/CMPSB/CMPSW (contd..)
22. SCAS/SCASB/SCASW
Syntax :-- SCAS destination
SCASB
SCASW
ā¢ The SCAS instruction is used to scan a byte or
a word with a byte in AL or word in AX.
ā¢The offset of the destination byte or a word
must be placed in DI register, which is
represented as ES:DI
23. SCAS/SCASB/SCASW (contd..)
ā¢On the execution of the instruction, DI is
automatically adjusted by one to the next
element of the destination.
ā¢If the Direction Flag is reset (DF = 0), the register
DI will be incremented by one for the byte scan
and incremented by two for the word scan.
ā¢If the Direction Flag is set (DF = 1), the register
DI will be decremented by one for the byte scan
and decremented by two for the word scan
24. SCAS/SCASB/SCASW (contd..)
ā¢In the SCAS instruction, the destination must be
declared as either DB or DW.
ā¢SCASB and SCASW are the implicit instructions
to scan a byte or word in a string .
ā¢The instruction SCASB is used to scan a byte and
the instruction SCASW is used to scan a word.
ā¢In multiple byte or word moves, the count must
be loaded in CX register which functions as a
counter.
25. ā¢ Operation Performed :--
ā¢ If byte in AL or word in AX > dest string byte or word then
CF =0, ZF = 0, SF = 0
ā¢ If byte in AL or word in AX < dest string byte or word then
CF =1, ZF = 0, SF = 1
ā¢ If byte in AL or word in AX = dest string byte or word then
CF =0, ZF = 1, SF = 0
ā¢ If a byte scan,
ā For DF =0, SI ļ SI +1 & DI ļ DI +1
ā For DF =1, SI ļ SI -1 & DI ļ DI - 1
ā¢ If a word scan,
ā For DF =0, SI ļ SI +2 & DI ļ DI +2
ā For DF =1, SI ļ SI -2 & DI ļ DI - 2
SCAS/SCASB/SCASW (contd..)
26. ā¢ Examples :--
MOV AX, DATA ; initialize ES
MOV ES,AX
CLD ; DF =0 for Incrementing
SI
LEA DI, D_STRING ; initialize DI
MOV AL,āVā
SCAS D_STRING ; Scans a byte or word in
AL or AX dep on D_string
to D_string
SCASB ; Scans byte from AL to
destination
SCASW ; Scans a word from AX to
destination
SCAS/SCASB/SCASW (contd..)
27. REP (Instruction Prefix)
The REP instruction prefix is used in string
instructions and interpreted as āRepeat while not
end of stringā
In REP prefix, CX register is loaded with the count.
Operation performed :--
ā¢ While CX <>0, perform the string operation
ā¢ CX ļ CX - 1
29. REPE/REPZ (Instruction Prefix)
The REPE instruction prefix is used in string
instructions and interpreted as āRepeat while not
end of string and string equalā (CX<>0 and ZF =1)
In REPE prefix, CX register is loaded with the
count.
Operation performed :--
ā¢ While CX <>0 & ZF -1 ,
perform the string operation
ā¢ CX ļ CX - 1
31. REPNE/REPNZ (Instruction Prefix)
The REPNE instruction prefix is used in string
instructions and interpreted as āRepeat while not
end of string and string not equalā (CX<>0 and
ZF =0)
In REPNE prefix, CX register is loaded with the
count.
Operation performed :--
ā¢ While CX <>0 & ZF = 0 ,
perform the string operation
ā¢ CX ļ CX - 1