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. Summary of Arithmetic Instructions
–ADD D,S
–ADC D,S
–SUB D,S
–SBB D,S
–CMP D,S
–NEG D
–DAA
–DAS
2. Summary of Arithmetic Instructions
– AAA
– AAS
– AAM
– AAD
– INC D
– DEC D
– DIV S
– IDIV S
– MUL S
– IMUL S
– CBW
– CWD
3. Logical Instructions
–These are the instructions used for basic
logic operations such as AND, OR, NOT and
XOR.
–These are also used for carrying out bit by
bit operations such as shift (SHR,SHL) or
rotate (ROL,ROR,RCR,RCL).
– One more Instruction under this category is
TEST instruction.
4. AND (Logical AND)
Syntax :-- AND destination, source
• This instruction is used to bit by bit AND the
contents of source to the destination.
•The result is stored in the destination.
•The source operand can be a immediate, a
register or a memory location.
•The destination can be a register or a memory
location, but not an immediate data.
•Both operands cannot be immediate data or
memory location.
•Flags affected : OF = 0 ,CF = 0 , AF is undefined.
• And other flags (SF, ZF, PF) are affected based on
the AND operation.
5. • Operation Performed :--
• Destination Destination AND source
• Examples :--
1. AND BH,CL ;AND byte in CL with Byte in BH,
result in BH.
2. AND BX,00FFH ;AND word in BX with immediate
data 00ffH
3. AND [5000H], DX ;AND word in DX with a
word in memory with offset
5000 in DS.
AND (Logical AND) contd..
6. Numeric Example
If AX = 3F0F,
After Instruction,
AND AX,9078H ; AX AX AND 9078H
;AX 3F0F AND 9078
3F0F 0011 1111 0000 1111
AND
9078 1001 0000 0111 1000
-------------------------------------
= 0001 0000 0000 1000
1008H in AX register
7. OR (Logical OR)
Syntax :-- OR destination, source
• This instruction is used to bit by bit OR the
contents of source to the destination.
•The result is stored in the destination.
•The source operand can be a immediate, a
register or a memory location.
•The destination can be a register or a memory
location, but not an immediate data.
•Both operands cannot be immediate data or
memory location.
•Flags affected : OF = 0 ,CF = 0 , AF is undefined.
• And other flags (SF, ZF, PF) are affected based on
the OR operation.
8. • Operation Performed :--
• Destination Destination OR source
• Examples :--
1. OR BH,CL ;OR byte in CL with Byte in BH,
result in BH.
2. OR BX,00FFH ;OR word in BX with immediate
data 00ffH
3. OR [5000H], DX ; OR word in DX with a
word in memory with offset
5000 in DS.
OR (Logical OR) contd..
9. Numeric Example
If AX = 3F0F,
After Instruction,
OR AX,9078H ; AX AX OR 9078H
;AX 3F0F OR 9078
3F0F 0011 1111 0000 1111
OR
9078 1001 0000 0111 1000
-------------------------------------
= 1011 1111 0111 1111
BF7FH in AX register
10. XOR (Logical XOR)
Syntax :-- XOR destination, source
• This instruction is used to bit by bit XOR the
contents of source to the destination.
•The result is stored in the destination.
•The source operand can be a immediate, a
register or a memory location.
•The destination can be a register or a memory
location, but not an immediate data.
•Both operands cannot be immediate data or
memory location.
•Flags affected : OF = 0 ,CF = 0 , AF is undefined.
• And other flags (SF, ZF, PF) are affected based on
the XOR operation.
11. • Operation Performed :--
• Destination Destination XOR source
• Examples :--
1. XOR BH,CL ;XOR byte in CL with Byte in BH,
result in BH.
2. XOR BX,00FFH ;XOR word in BX with immediate
data 00ffH
3. XOR [5000H], DX ; XOR word in DX with a
word in memory with offset
5000 in DS.
XOR (Logical XOR) contd..
13. NOT (Logical Invert )
Syntax :-- NOT destination
• This instruction complements (inverts) each
bit of the byte or word stored in the
destination.
•The result is stored in the destination.
•The destination can be a register or a memory
location.
•No Flags affected
14. • Operation Performed :--
• Destination NOT Destination
• Examples :--
1. NOT BH ;Complement byte in BH, result in BH.
2. NOT BX ; Complement word in BX, result in BX.
3. NOT BYTE PTR [5000H] ; Complement byte
in memory with offset 5000 in DS.
NOT (Logical Invert ) contd..
15. Numeric Example
If AX = 3F0F,
After Instruction,
NOT AX ; AX NOT AX
;AX NOT 3F0F
3F0F 0011 1111 0000 1111
Complement
-------------------------------------
= 1100 0000 1111 0000
C0F0H in AX register
16. TEST (Logical compare )
Syntax :-- TEST destination, source
• This instruction is used to bit by bit AND the
contents of source to the destination.
•The result is not stored in the destination.
•The source operand can be a immediate, a
register or a memory location.
•The destination can be a register or a memory
location, but not an immediate data.
•Both operands cannot be immediate data or
memory location.
•Flags affected : OF = 0 ,CF = 0 , SF, ZF, PF.
•TEST instruction is used to set flags before a
conditional jump instruction
17. • Operation Performed :--
– Flags set result of Destination AND source
• Examples :--
1. TEST BH,CL ;AND byte in CL with Byte in BH,
no result but flags are affected.
2. TEST BX,00FFH ;AND word in BX with immediate
data 00ffH, no result but flags are
affected.
3. TEST DX, [5000H];AND word in DX with a word in
memory with offset 5000 in DS,
no result but flags are affected.
TEST (Logical Compare) contd..
18. SHL / SAL (Shift Logical/Arithmetic Left)
Syntax :-- SHL/SAL destination, count
• SHL & SAL are the opcodes for the same
operation
•This instruction shifts the destination bit by bit to
the left and insert zeroes in the newly introduced
least significant bits.
•The shift operation is through carry.
•The count can be either 1 or specified by CL
register.
•The destination can be a byte or a word in
register or a memory location, but not an
immediate data.
•Flags affected : OF ,CF, SF, ZF, PF.
•These instructions can be used to multiply an
unsigned number by power of 2.
19. CF BX
0
0
1
CF BX
• Operation Performed :--
–CF MSB ------------------ LSB 0
• Example :--
– If CF = 0, BX = E6D3H
– After SAL BX, 1 ; Shift the contents of BX
register by one towards left
SHL / SAL (Shift Logical/Arithmetic Left)Cntd..
1 1 1 0 0 1 1 0 1 1 0 1 0 0 1 1
1 1 0 0 1 1 0 1 1 0 1 0 0 1 1 0
BX = CDA6
20. • Example :--
• Use of SHL instruction for Multiplication:-
– If CF = 0, BH = 04H
– MOV CL, 03 ; Load CL register for
the count
– SHL BH, CL ; Shift the contents
of BX register by one
towards left
– BH = 20H (32D) [ 04 * 23 = 32 D]
– Note :-- SHL can be used to multiply a number
with powers of 2.
SHL / SAL (Shift Logical/Arithmetic Left)Cntd..
22. SAR (Shift Arithmetic Right )
Syntax :-- SAR destination, count
• This instruction shifts the destination bit by bit to
the right and MSB position is kept in the old MSB
position
•The shift operation is through carry, LSB is shifted
to CF.
•The count can be either 1 or specified by CL
register.
•The destination can be a byte or a word in
register or a memory location, but not an
immediate data.
•Flags affected : OF ,CF, SF, ZF, PF.
•This instruction can be used to divide an unsigned
number by power of 2.
23. BX CF
0
1
BX CF
1 1 1 1 0 0 1 1 0 1 1 0 1 0 0 1
• Operation Performed :--
– MSB ----------------- LSB CF
• Example :--
– If CF = 0, BX = E6D3H
– After SAR BX, 1 ; Shift the contents of BX
register by one towards right
SAR (Shift Arithmetic Right)Cntd..
1 1 1 0 0 1 1 0 1 1 0 1 0 0 1 1
BX = F369H
24. • Example :--
• Use of SAR instruction for Division:-
– If CF = 0, BH = 14H
– MOV CL, 02 ; Load CL register for the
count
– SAR BH, CL ; Shift the contents
of BX register by one
towards right
– BH = 05H (20D) [ 20 / 22 = 05D]
– Note :-- SAR can be used to divide a number with
powers of 2 and get the quotient.
SAR (Shift Arithmetic Right )Cntd..
26. SHR (Shift Logical Right)
Syntax :-- SHR destination, count
•This instruction shifts the destination bit by
bit to the right and insert zeroes in the newly
introduced most significant bits.
•The shift operation is through carry.
•The count can be either 1 or specified by CL
register.
•The destination can be a byte or a word in
register or a memory location, but not an
immediate data.
•Flags affected : OF ,CF, SF, ZF, PF.
27. BX CF
0
0
1
BX CF
0 1 1 1 0 0 1 1 0 1 1 0 1 0 0 1
• Operation Performed :--
–0 MSB ------------------ LSB CF
• Example :--
– If CF = 0, BX = E6D3H
– After SHR BX, 1 ; Shift the contents of BX
register by one towards right
SHR (Shift Logical Right)Cntd..
1 1 1 0 0 1 1 0 1 1 0 1 0 0 1 1
BX = 7369H
28. ROR (Rotate Right without Carry)
Syntax :-- ROR destination, count
•This instruction rotates the destination bit by
bit to the right excluding the carry
•The bit moved out of LSB is rotated around
into the MSB and also copied to CF.
•The count can be either 1 or specified by CL
register.
•The destination can be a byte or a word in
register or a memory location, but not an
immediate data.
•Flags affected : OF ,CF
29. BX CF
0
1
BX CF
1 1 1 1 0 0 1 1 0 1 1 0 1 0 0 1
• Operation Performed :--
– MSB LSB CF
• Example :--
– If CF = 0, BX = E6D3H
– After ROR BX, 1 ; Rotate the contents of BX
register by one towards right
ROR (Rotate Right without Carry)Cntd..
1 1 1 0 0 1 1 0 1 1 0 1 0 0 1 1
BX = F369H
30. • Example :--
– If CF = 0, BH = 54H
– MOV CL, 02 ; Load CL register for the count
ROR BH, CL ; Rotate the contents of BH register by twice
towards right
ROR (Rotate Right without Carry)Cntd..
0 0 0 1 0 1 0 1
BH CF
0
0
0
0 1 0 1 0 1 0 0
0 0 1 0 1 0 1 0
BH = 15H with CF = 0
31. • Uses of ROR instruction:--
• This instruction can be used to swap the
nibbles in a byte or to swap the bytes in a
word.
– MOV CL,04H
ROR AL, CL
• It can also be used to rotate the bit into CF
which can be checked later for a conditional
jump. (JC or JNC)
32. ROL (Rotate Left without Carry)
Syntax :-- ROL destination, count
•This instruction rotates the destination bit by
bit to the left excluding the carry
•The bit moved out of MSB is rotated around
into the LSB and also copied to CF.
•The count can be either 1 or specified by CL
register.
•The destination can be a byte or a word in
register or a memory location, but not an
immediate data.
•Flags affected : OF ,CF
33. CF BX
0
1
CF BX
1 1 0 0 1 1 0 1 1 0 1 0 0 1 1 1
• Operation Performed :--
– CF MSB LSB
• Example :--
– If CF = 0, BX = E6D3H
– After ROL BX, 1 ; Rotate the contents of BX
register by one towards left
ROL (Rotate Left without Carry)Cntd..
1 1 1 0 0 1 1 0 1 1 0 1 0 0 1 1
BX = CDA7H
34. • Example :--
– If CF = 0, BH = 54H
– MOV CL, 02 ; Load CL register for the count
ROL BH, CL ; Rotate the contents of BH register by twice
towards Left
ROL (Rotate Left without Carry)Cntd..
0 1 0 1 0 0 0 1
CF BH
0
0
1
0 1 0 1 0 1 0 0
1 0 1 0 1 0 0 0
BH = 51H with CF = 1
35. • Uses of ROL instruction:--
• This instruction can be used to swap the
nibbles in a byte or to swap the bytes in a
word.
– MOV CL,04H
ROL AL, CL
• It can also be used to rotate the bit into CF
which can be checked later for a conditional
jump. (JC or JNC)
36. RCR (Rotate Right with Carry)
Syntax :-- ROR destination, count
•This instruction rotates the destination bit by
bit to the right including the carry
•The bit moved out of LSB is rotated into CF
and the bit in CF is rotated into the MSB.
•The count can be either 1 or specified by CL
register.
•The destination can be a byte or a word in
register or a memory location, but not an
immediate data.
•Flags affected : OF ,CF
37. BX CF
0
1
BX CF
0 1 1 1 0 0 1 1 0 1 1 0 1 0 0 1
• Operation Performed :--
– MSB LSB CF
• Example :--
– If CF = 0, BX = E6D3H
– After RCR BX, 1 ; Rotate the contents of BX
register by one towards right through
carry
RCR (Rotate Right with Carry)Cntd..
1 1 1 0 0 1 1 0 1 1 0 1 0 0 1 1
BX = 7369H
38. • Example :--
– If CF = 0, BH = 54H
– MOV CL, 02 ; Load CL register for the count
RCR BH, CL ; Rotate the contents of BH register by twice
towards right through carry
RCR (Rotate Right with Carry)Cntd..
0 0 0 1 0 1 0 1
BH CF
0
0
0
0 1 0 1 0 1 0 0
0 0 1 0 1 0 1 0
BH = 15H with CF = 0
39. RCL (Rotate Left with Carry)
Syntax :-- RCL destination, count
•This instruction rotates the destination bit by
bit to the left including the carry
•The bit moved out of MSB is rotated into CF
and the bit in CF is rotated into the LSB.
•The count can be either 1 or specified by CL
register.
•The destination can be a byte or a word in
register or a memory location, but not an
immediate data.
•Flags affected : OF ,CF
40. CF BX
0
1
CF BX
1 1 0 0 1 1 0 1 1 0 1 0 0 1 1 0
• Operation Performed :--
– CF MSB LSB
• Example :--
– If CF = 0, BX = E6D3H
– After RCL BX, 1 ; Rotate the contents of BX
register by one towards left through
carry
RCL (Rotate Left with Carry)Cntd..
1 1 1 0 0 1 1 0 1 1 0 1 0 0 1 1
BX = CDA6H
41. • Example :--
– If CF = 0, BH = 54H
– MOV CL, 02 ; Load CL register for the count
RCL BH, CL ; Rotate the contents of BH register by twice
towards Left through carry
RCL (Rotate Left with Carry)Cntd..
0 1 0 1 0 0 0 0
CF BH
0
0
1
0 1 0 1 0 1 0 0
1 0 1 0 1 0 0 0
BH = 50H with CF = 1