INSTRUCTION SET OF 8085
Classification Of Instruction Set
There are 5 categories:
• (1) Data Transfer Instruction,
• (2) Arithmetic Instructions,
• (3) Logical Instructions,
• (4) Branching Instructions,
• (5) Control Instructions,
(1) Data Transfer Instructions
• MOV Rd, Rs
• MOV M, Rs
• MOV Rd, M
• This instruction copies the contents of the
source register into the destination register.
• The contents of the source register are not
altered.
• Example: MOV B,A or MOV M,B or MOV C,M
A 20 B 20
A F
B 30 C
D E
H 20 L 50
A 20 B
BEFORE EXECUTION AFTER EXECUTION
MOV B,A
A F
B 30 C
D E
H 20 L 50
A F
B C
D E
H 20 L 50
A F
B C 40
D E
H 20 L 50
MOV M,B
MOV C,M
40 40
30
(2) Data Transfer Instructions
• MVI R, Data(8-bit)
• MVI M, Data(8-bit)
• The 8-bit immediate data is stored in the
destination register (R) or memory (M), R is
general purpose 8 bit register such as
A,B,C,D,E,H and L.
• Example: MVI B, 60H or MVI M, 40H
A F
B C
D E
H L
A F
B 60 C
D E
H L
AFTER EXECUTIONBEFORE EXECUTION
MVI B,60H
40
HL=2050H
2051H
204FH 204FH
HL=2050H
2051H
MVI M,40H
BEFORE EXECUTION AFTER EXECUTION
(3) Data Transfer Instructions
• LDA 16-bit address
• The contents of a memory location, specified
by a 16-bit address in the operand, are
copied to the accumulator (A).
• The contents of the source are not altered.
• Example: LDA 2000H
A
30
A 30
30
AFTER EXECUTIONBEFORE EXECUTION
LDA 2000H
2000H 2000H
(4) Data Transfer Instructions
• LDAX Register Pair
• Load accumulator (A) with the contents of
memory location whose address is specified
by BC or DE or register pair.
• The contents of either the register pair or the
memory location are not altered.
• Example: LDAX D
A F
B C
D 20 E 30
A 80 F
B C
D 20 E 30
80 80
AFTER EXECUTIONBEFORE EXECUTION
LDAX D
2030H 2030H
(5) Data Transfer Instructions
• STA 16-bit address
• The contents of accumulator are copied into
the memory location i.e. address specified by
the operand in the instruction.
• Example: STA 2000 H
A 50 A 50
50
AFTER EXECUTIONBEFORE EXECUTION
STA 2000H2000H 2000H
(6) Data Transfer Instructions
• STAX Register Pair
• Store the contents of accumulator (A) into
the memory location whose address is
specified by BC Or DE register pair.
• Example: STAX B
A 50 F
B 10 C 20
D E
A 50 F
B 10 C 20
D E
50
AFTER EXECUTIONBEFORE EXECUTION
STAX B
1020H 1020H
(7) Data Transfer Instructions
• SHLD 16-bit address
• Store H-L register pair in memory.
• The contents of register L are stored into
memory location specified by the 16-bit
address.
• The contents of register H are stored into the
next memory location.
• Example: SHLD 2500 H
H 30 L 60
BEFORE EXECUTION AFTER EXECUTION
60
30
H 30 L 60
SHLD 2500H2500H 2500H
204FH
2502H
204FH
2502H
(8) Data Transfer Instructions
• XCHG
• The contents of register H are exchanged
with the contents of register D.
• The contents of register L are exchanged with
the contents of register E.
• Example: XCHG
D 20 E 40
H 70 L 80
D 70 E 80
H 20 L 40
BEFORE EXECUTION AFTER EXECUTION
XCHG
(9) Data Transfer Instructions
• SPHL
• Move data from H-L pair to the Stack Pointer
(SP)
• This instruction loads the contents of H-L pair
into SP.
• Example: SPHL
H 25 L 00
SP
BEFORE EXECUTION
AFTER EXECUTION
H 25 L 00
SP 2500
SPHL
(10) Data Transfer Instructions
• XTHL
• Exchange H–L with top of stack
• The contents of L register are exchanged with
the location pointed out by the contents of
the SP.
• The contents of H register are exchanged
with the next location (SP + 1).
• Example: XTHL
H
30
L
40
SP 2700
BEFORE EXECUTION
50
60
H
60
L
50
SP 2700 40
30
AFTER EXECUTION
XTHL
2700H
2701H
2702H
2700H
2701H
2702H
L=SP
H=(SP+1)
(11) Data Transfer Instructions
• PCHL
• Load program counter with H-L contents
• The contents of registers H and L are copied into
the program counter (PC).
• The contents of H are placed as the high-order
byte and the contents of L as the low-order
byte.
•
H
60
L
00
PC
BEFORE EXECUTION AFTER EXECUTION
H
60
L
00
PC 6000
PCHL
(12) Data Transfer Instructions
• IN 8-bit port address
• Copy data to accumulator from a port with 8-
bit address.
• The contents of I/O port are copied into
accumulator.
• Example: IN 80 H
10 A
10 A 10
BEFORE EXECUTION
AFTER EXECUTION
IN 80H
PORT 80H
PORT 80H
(13) Data Transfer Instructions
• OUT 8-bit port address
• Copy data from accumulator to a port with 8-
bit address
• The contents of accumulator are copied into
the I/O port.
• Example: OUT 50 H
10 A 40
40 A 40
BEFORE EXECUTION
AFTER EXECUTION
OUT 50H
PORT 50H
PORT 50H
Arithematic Instructions
• These instructions perform the operations
like:
• Addition
• Subtraction
• Increment
• Decrement
(1) Arithematic Instructions
• ADD R
• ADD M
• The contents of register or memory are added
to the contents of accumulator.
• The result is stored in accumulator.
• If the operand is memory location, its address is
specified by H-L pair.
• Example: ADD C or ADD M
B C 30
D E
H L
B C 30
D E
H L
AFTER EXECUTIONBEFORE EXECUTION
B C
D E
H 20 L 50
B C
D E
H 20 L 50
AFTER EXECUTIONBEFORE EXECUTION
A 20
A 50A 20
A 30
ADD C
A=A+R
ADD M
A=A+M
10 10
2050 2050
(2) Arithematic Instructions
• ADC R
• ADC M
• The contents of register or memory and Carry Flag
(CY) are added to the contents of accumulator.
• The result is stored in accumulator.
• If the operand is memory location, its address is
specified by H-L pair. All flags are modified to reflect
the result of the addition.
• Example: ADC C or ADC M
B C 20
D E
H L
A 50
B C 20
D E
H L
A 71
AFTER EXECUTIONBEFORE EXECUTION
ADC C
A=A+R+CY
CY 1 CY 0
CY 1 CY 0
A 20 A 51
H 20 L 50 H 20 L 50
ADC M
A=A+M+CY
AFTER EXECUTIONBEFORE EXECUTION
30 302050H 2050H
(3) Arithematic Instructions
• ADI 8-bit data
• The 8-bit data is added to the contents of
accumulator.
• The result is stored in accumulator.
• Example: ADI 10 H
A 50 A 60
AFTER EXECUTIONBEFORE EXECUTION
ADI 10H
A=A+DATA(8)
(4) Arithematic Instructions
• ACI 8-bit data
• The 8-bit data and the Carry Flag (CY) are
added to the contents of accumulator.
• The result is stored in accumulator.
• Example: ACI 20 H
CY 1 CY 0
A 30 A 51
AFTER EXECUTIONBEFORE EXECUTION
ACI 20H
A=A+DATA
(8)+CY
(5) Arithematic Instructions
• DAD Register pair
• The 16-bit contents of the register pair are
added to the contents of H-L pair.
• The result is stored in H-L pair.
• If the result is larger than 16 bits, then CY is
set.
• Example: DAD D
AFTER EXECUTIONBEFORE EXECUTION
B C
D 10 E 20
H 20 L 50
SP
B C
D 10 E 20
H 30 L 70
SP
CY 0 CY 0
DAD D
HL=HL+R
(6) Arithematic Instructions
• SUB R
• SUB M
• The contents of the register or memory location are
subtracted from the contents of the accumulator.
• The result is stored in accumulator.
• If the operand is memory location, its address is
specified by H-L pair.
• Example: SUB B or SUB M
B 30 C
D E
H L
A 50
B 30 C
D E
H L
A 20
AFTER EXECUTIONBEFORE EXECUTION
SUB B
A=A-R
AFTER EXECUTIONBEFORE EXECUTION
A 50 A 40
H
10
L
20
H
10
L
20
SUB M
A=A-M
10 10
1020H1020H
(7) Arithematic Instructions
• SBB R
• SBB M
• The contents of the register or memory location and
Borrow Flag (i.e.CY) are subtracted from the contents of
the accumulator.
• The result is stored in accumulator.
• If the operand is memory location, its address is specified
by H-L pair.
• Example: SBB C or SBB M
B C 20
D E
H L
A 40
CY 1
B C 20
D E
H L
A 19
CY 0
SBB C
A=A-R-CY
AFTER EXECUTIONBEFORE EXECUTION
CY 1
A 50
H
20
L
50
CY 0
A 39
H
20
L
50
AFTER EXECUTIONBEFORE EXECUTION
SBB M
A=A-M-CY
10 10
2050H 2050H
(8) Arithematic Instructions
• SUI 8-bit data
• OPERATION: A=A-DATA(8)
• The 8-bit immediate data is subtracted from
the contents of the accumulator.
• The result is stored in accumulator.
• Example: SUI 45 H
(9) Arithematic Instructions
• SBI 8-bit data
• The 8-bit data and the Borrow Flag (i.e. CY) is
subtracted from the contents of the
accumulator.
• The result is stored in accumulator.
• Example: SBI 20 H
CY 1
A 50
AFTER EXECUTIONBEFORE EXECUTION
CY 0
A 29SBI 20H
A=A-DATA(8)-CY
(10) Arithematic Instructions
• INR R
• INR M
• The contents of register or memory location are
incremented by 1.
• The result is stored in the same place.
• If the operand is a memory location, its address
is specified by the contents of H-L pair.
• Example: INR B or INR M
B 10 C
D E
H L
A
B 11 C
D E
H L
A
AFTER EXECUTIONBEFORE EXECUTION
H
20
L
50
H
20
L
50
30 31
2050H 2050H
AFTER EXECUTIONBEFORE EXECUTION
INR M
M=M+1
B 10 C
D E
H L
A
BEFORE EXECUTION
INR B
R=R+1
(11) Arithematic Instructions
• INX Rp
• The contents of register pair are incremented
by 1.
• The result is stored in the same place.
• Example: INX H
B C
D E
H 10 L 20
B C
D E
H 11 L 21
AFTER EXECUTIONBEFORE EXECUTION
SPSP
INX H
RP=RP+1
(12) Arithematic Instructions
• DCR R
• DCR M
• The contents of register or memory location are
decremented by 1.
• The result is stored in the same place.
• If the operand is a memory location, its address
is specified by the contents of H-L pair.
• Example: DCR E or DCR M
B C
D E 19
H L
A
AFTER EXECUTION
B C
D E 20
H L
A
BEFORE EXECUTION
DCR E
R=R-1
H
20
L
50
H
20
L
5021 20
2050H
AFTER EXECUTIONBEFORE EXECUTION
DCR M
M=M-1
2050H
(13) Arithematic Instructions
• DCX Rp
• The contents of register pair are decremented
by 1.
• The result is stored in the same place.
• Example: DCX D
B C
D 10 E 20
H L
B C
D 10 E 19
H L
AFTER EXECUTIONBEFORE EXECUTION
SPSP
DCX D
RP=RP-1
(1) Logical Instructions
• ANA R
• ANA M
• AND specified data in register or memory with
accumulator.
• Store the result in accumulator (A).
• Example: ANA B, ANA M
B 10 C
D E
H L
A
B 0F C
D E
H L
A 0A
AFTER EXECUTION
ANA B
A=A and R
B 0F C
D E
H L
A AA
BEFORE EXECUTION
CY AC CY 0 AC 1
AFTER EXECUTIONBEFORE EXECUTION
CY AC CY 0 AC 1
A 11A 55
H 20 L 50 H 20 L 50
B3 B3
2050H
ANA M
A=A and M
2050H
1010 1010=AAH
0000 1111=0FH
0000 1010=0AH
0101 0101=55H
1011 0011=B3H
0001 0001=11H
(2) Logical Instructions
• ANI 8-bit data
• AND 8-bit data with accumulator (A).
• Store the result in accumulator (A)
• Example: ANI 3FH
CY AC
A B3
AFTER EXECUTIONBEFORE EXECUTION
CY 0 AC 1
A 33
ANI 3FH
A=A and DATA(8)
1011 0011=B3H
0011 1111=3FH
0011 0011=33H
(3) Logical Instructions
• XRA Register (8-bit)
• XOR specified register with accumulator.
• Store the result in accumulator.
• Example: XRA C
B 10 C
D E
H L
A
B C 2D
D E
H L
A 87
AFTER EXECUTION
XRA C
A=A xor R
B C 2D
D E
H L
A AA
BEFORE EXECUTION
CY AC CY 0 AC 0
1010 1010=AAH
0010 1101=2DH
1000 0111=87H
(4) Logical Instructions
• XRA M
• XOR data in memory (memory location
pointed by H-L pair) with Accumulator.
• Store the result in Accumulator.
• Example: XRA M
H 20 L 50
A 55
AFTER EXECUTION
XRA M
A=A xor M
BEFORE EXECUTION
CY AC CY 0 AC 0
0101 0101=55H
1011 0011=B3H
1110 0110=E6H
H 20 L 50
A E6
B3 B3
2050H 2050H
(5) Logical Instructions
• XRI 8-bit data
• XOR 8-bit immediate data with accumulator (A).
• Store the result in accumulator.
• Example: XRI 39H
CY AC
A B3
AFTER EXECUTIONBEFORE EXECUTION
CY 0 AC 0
A 8A
XRI 39H
A=A xor DATA(8)
1011 0011=B3H
0011 1001=39H
1000 1010=8AH
(6) Logical Instructions
• ORA Register
• OR specified register with accumulator (A).
• Store the result in accumulator.
• Example: ORA B
AFTER EXECUTIONBEFORE EXECUTION
CY AC
ORA B
A=A or R
1010 1010=AAH
0001 0010=12H
1011 1010=BAH
B 12 C
D E
H L
A AA
B 12 C
D E
H L
A BA
CY 0 AC 0
(7) Logical Instructions
• ORA M
• OR specified register with accumulator (A).
• Store the result in accumulator.
• Example: ORA M
AFTER EXECUTIONBEFORE EXECUTION
CY AC
ORA M
A=A or M
0101 0101=55H
1011 0011=B3H
1111 0111=F7H
H 20 L 50
A 55 A F7
CY 0 AC 0
H 20 L 50
B3 B3
2050H 2050H
(8) Logical Instructions
• ORI 8-bit data
• OR 8-bit data with accumulator (A).
• Store the result in accumulator.
• Example: ORI 08H
CY AC
A B3
AFTER EXECUTIONBEFORE EXECUTION
CY 0 AC 0
A BB
ORI 08H
A=A or DATA(8)
1011 0011=B3H
0000 1000=08H
1011 1011=BBH
(9) Logical Instructions
• CMP Register
• CMP M
• Compare specified data in register or memory
with accumulator (A).
• Store the result in accumulator.
• Example: CMP D or CMP M
B 10 C
D E
H L
A
B C
D B9 E
H L
A B8
AFTER EXECUTION
CMP D
A-R
B C
D B9 E
H L
A B8
BEFORE EXECUTION
CY Z CY 0 Z 0
AFTER EXECUTIONBEFORE EXECUTION
CY Z CY 0 Z 1
A B8A B8
H 20 L 50 H 20 L 50
B8 B8
2050H
CMP M
A-M
2050H
A>R: CY=0,Z=0
A=R: CY=0,Z=1
A<R: CY=1,Z=0
A>M: CY=0,Z=0
A=M: CY=0,Z=1
A<M: CY=1,Z=0
(10) Logical Instructions
• CPI 8-bit data
• Compare 8-bit immediate data with
accumulator (A).
• Store the result in accumulator.
• Example: CPI 30H
CY Z
A BA
AFTER EXECUTIONBEFORE EXECUTION
CY 0 AC 0
A BA
CPI 30H
A-DATA
A>DATA: CY=0,Z=0
A=DATA: CY=0,Z=1
A<DATA: CY=1,Z=0
1011 1010=BAH
(11) Logical Instructions
• STC
• It sets the carry flag to 1.
• Example: STC
CY 0
AFTER EXECUTIONBEFORE EXECUTION
CY 1STC
CY=1
(12) Logical Instructions
• CMC
• It complements the carry flag.
• Example: CMC
CY 1
AFTER EXECUTIONBEFORE EXECUTION
CY 0
CMC
(13) Logical Instructions
• CMA
• It complements each bit of the accumulator.
• Example: CMA
(14) Logical Instructions
• RLC
• Rotate accumulator left
• Each binary bit of the accumulator is rotated left
by one position.
• Bit D7 is placed in the position of D0 as well as
in the Carry flag.
• CY is modified according to bit D7.
• Example: RLC.
B7 B6 B5 B4 B3 B2 B1 B0CY
B6 B5 B4 B3 B2 B1 B0 B7B7
AFTER EXECUTION
BEFORE EXECUTION
(15) Logical Instructions
• RRC
• Rotate accumulator right
• Each binary bit of the accumulator is rotated right by
one
• position.
• Bit D0 is placed in the position of D7 as well as in the
Carry flag.
• CY is modified according to bit D0.
• Example: RRC.
B7 B6 B5 B4 B3 B2 B1 B0 CY
B0 B7 B6 B5 B4 B3 B2 B1 B0
AFTER EXECUTION
BEFORE EXECUTION
(16) Logical Instructions
• RAL
• Rotate accumulator left through carry
• Each binary bit of the accumulator is rotated left
by one position through the Carry flag.
• Bit D7 is placed in the Carry flag, and the Carry
flag is placed in the least significant position D0.
• CY is modified according to bit D7.
• Example: RAL.
B7 B6 B5 B4 B3 B2 B1 B0CY
B6 B5 B4 B3 B2 B1 B0 CYB7
AFTER EXECUTION
BEFORE EXECUTION
(17) Logical Instructions
• RAR
• Rotate accumulator right through carry
• Each binary bit of the accumulator is rotated left
by one position through the Carry flag.
• Bit D7 is placed in the Carry flag, and the Carry
flag is placed in the least significant position D0.
• CY is modified according to bit D7.
• Example: RAR
B7 B6 B5 B4 B3 B2 B1 B0 CY
CY B7 B6 B5 B4 B3 B2 B1 B0
AFTER EXECUTION
BEFORE EXECUTION
Branching Instructions
• The branch group instructions allows the
microprocessor to change the sequence of
program either conditionally or under certain
test conditions. The group includes,
• (1) Jump instructions,
• (2) Call and Return instructions,
• (3) Restart instructions,
(1) Branching Instructions
• JUMP ADDRESS
• BEFORE EXECUTION AFTER EXECUTION
• Jump unconditionally to the address.
• The instruction loads the PC with the address
given within the instruction and resumes the
program execution from specified location.
• Example: JMP 200H
PC PC 2000JMP 2000H
Conditional Jumps
(2) Branching Instructions
• CALL address
• Call unconditionally a subroutine whose
starting address given within the
instruction and used to transfer
program control to a subprogram or
subroutine.
• Example: CALL 2000H
Conditional Calls
Instruction Code Description Condition for CALL
CC Call on carry CY=1
CNC Call on not carry CY=0
CP Call on positive S=0
CM Call on minus S=1
CPE Call on parity even P=1
CPO Call on parity odd P=0
CZ Call on zero Z=1
CNZ Call on not zero Z=0
(3) Branching Instructions
• RET
• Return from the subroutine unconditionally.
• This instruction takes return address from
the stack and loads the program counter
with this address.
• Example: RET
SP 27FD
PC
00
62
SP 27FF
PC 6200
00
62
AFTER EXECUTIONBEFORE EXECUTION
RET
27FFH
27FEH
27FDH
27FFH
27FEH
27FDH
(4) Branching Instructions
• RST n
• Restart n (0 to 7)
• This instruction transfers the program
control to a specific memory address. The
processor multiplies the RST number by 8 to
calculate the vector address.
• Example: RST 6
SP 3000
PC 2000
SP 2999
PC 0030
01
20
AFTER EXECUTIONBEFORE EXECUTION
RST 6
3000H
2FFFH
2FFEH
SP-1
ADDRESS OF THE NEXT INSTRUCTION IS 2001H
3000H
2FFFH
2FFEH
Vector Address For Return
Instructions
Instruction Code Vector Address
RST 0 0*8=0000H
RST 1 0*8=0008H
RST 2 0*8=0010H
RST 3 0*8=0018H
RST 4 0*8=0020H
RST 5 0*8=0028H
RST 6 0*8=0030H
Rst 7 0*8=0038H
(1) Control Instructions
• NOP
• No operation
• No operation is performed.
• The instruction is fetched and decoded but no
operation is executed.
• Example: NOP
(2) Control Instructions
• HLT
• Halt
• The CPU finishes executing the current
instruction and halts any further execution.
• An interrupt or reset is necessary to exit from
the halt state.
• Example: HLT
(3) Control Instructions
RST5.5 Mask
RST6.5 Mask
RST7.5 Mask
}
0 – Available
(not masked)
1 - Masked
Mask Set Enable 0 -
Ignore bits 0-2
1 - Set the masks
according to bits 0-2
Force RST7.5 Flip Flop to
reset
Not Used
Enable Serial Data
0 - Ignore bit 7
1 - Send bit 7 to SOD
pin
Serial Data Output
While EI/DI instructions enable/disable all maskable interrupts at once, SIM
instruction can be used to selectively mask (or disable) 3 out of 4 maskable
interrupts which are RST7.5,RST6.5 & RST5.5. Fourth maskable interrupt INTR
can only be enabled/disabled by using EI/DI instructions.
SIM instruction can be used to perform two different tasks: 1. For masking of 3
interrupts 2. For serial data transmission (Each time a SIM instruction is executed, 7th
bit
of Accumulator is automatically copied to SOD pin of 8085)
Example of how to use SIM instruction in any program
Example problem:- Set the interrupt masks so that RST5.5 is enabled, RST6.5 is
masked & RST7.5 is enabled.
• We can determine the bit pattern as per format of SIM instruction given below:
- Enable 5.5
- Disable 6.5
- Enable 7.5
- Allow setting the
masks
- Don’t reset the flip flop
- Bit 5 is not used
- Don’t use serial data
- Serial data is ignored
bit 0 = 0
bit 1 = 1
bit 2 = 0
bit 3 = 1
bit 4 = 0
bit 5 = 0
bit 6 = 0
bit 7 = 0
0 0 0 0 1 0 1 0
Contents of accumulator are:
0AH
EI
MVI A,
0A SIM
• Now use following set of instructions to implement required masks using SIM
 First of all enable all interrupts using EI instruction without using which SIM wouldn't be
effective
 Move the prepared bit pattern (0AH here) to Accumulator
 SIM instruction interprets contents of Accumulator same as per the above format &
performs the desired operation of masking the respective interrupts
(4) Control Instructions
7 6 5 4 3 2 1 0
RST5.5 Mask
RST6.5 Mask
RST7.5 Mask
}
Indicates current
masking status of
interrupts set by user
(using SIM)
0 - Available
1 - Masked
Status of Interrupt Enable Flip Flop: 1
Set 0 Reset
Serial Data In
RST5.5 Interrupt
Pending RST6.5
Interrupt Pending
RST7.5 Interrupt
Pending
Like SIM instruction, RIM can be used to perform two different tasks: 1. To read
current status of 3 maskable interrupts 2. For serial data reception (Each time a SIM
instruction is executed, the bit present on SID pin of 8085 is automatically moved to 7th
bit of the Accumulator)
Pending Interrupts: Since the 8085 has 5 interrupt lines, another interrupts may
occur while an interrupt is being attended and thus remain pending. Such
interrupts are called pending interrupts & would be attended as soon as ISR of
current interrupt is executed. A programmer may know the status (current value
of high/low on the respective interrupt pin) of such interrupts anytime by using
RIM instruction.

8085 instruction set (detailed)

  • 1.
  • 2.
    Classification Of InstructionSet There are 5 categories: • (1) Data Transfer Instruction, • (2) Arithmetic Instructions, • (3) Logical Instructions, • (4) Branching Instructions, • (5) Control Instructions,
  • 3.
    (1) Data TransferInstructions • MOV Rd, Rs • MOV M, Rs • MOV Rd, M • This instruction copies the contents of the source register into the destination register. • The contents of the source register are not altered. • Example: MOV B,A or MOV M,B or MOV C,M
  • 4.
    A 20 B20 A F B 30 C D E H 20 L 50 A 20 B BEFORE EXECUTION AFTER EXECUTION MOV B,A A F B 30 C D E H 20 L 50 A F B C D E H 20 L 50 A F B C 40 D E H 20 L 50 MOV M,B MOV C,M 40 40 30
  • 5.
    (2) Data TransferInstructions • MVI R, Data(8-bit) • MVI M, Data(8-bit) • The 8-bit immediate data is stored in the destination register (R) or memory (M), R is general purpose 8 bit register such as A,B,C,D,E,H and L. • Example: MVI B, 60H or MVI M, 40H
  • 6.
    A F B C DE H L A F B 60 C D E H L AFTER EXECUTIONBEFORE EXECUTION MVI B,60H 40 HL=2050H 2051H 204FH 204FH HL=2050H 2051H MVI M,40H BEFORE EXECUTION AFTER EXECUTION
  • 7.
    (3) Data TransferInstructions • LDA 16-bit address • The contents of a memory location, specified by a 16-bit address in the operand, are copied to the accumulator (A). • The contents of the source are not altered. • Example: LDA 2000H
  • 8.
    A 30 A 30 30 AFTER EXECUTIONBEFOREEXECUTION LDA 2000H 2000H 2000H
  • 9.
    (4) Data TransferInstructions • LDAX Register Pair • Load accumulator (A) with the contents of memory location whose address is specified by BC or DE or register pair. • The contents of either the register pair or the memory location are not altered. • Example: LDAX D
  • 10.
    A F B C D20 E 30 A 80 F B C D 20 E 30 80 80 AFTER EXECUTIONBEFORE EXECUTION LDAX D 2030H 2030H
  • 11.
    (5) Data TransferInstructions • STA 16-bit address • The contents of accumulator are copied into the memory location i.e. address specified by the operand in the instruction. • Example: STA 2000 H
  • 12.
    A 50 A50 50 AFTER EXECUTIONBEFORE EXECUTION STA 2000H2000H 2000H
  • 13.
    (6) Data TransferInstructions • STAX Register Pair • Store the contents of accumulator (A) into the memory location whose address is specified by BC Or DE register pair. • Example: STAX B
  • 14.
    A 50 F B10 C 20 D E A 50 F B 10 C 20 D E 50 AFTER EXECUTIONBEFORE EXECUTION STAX B 1020H 1020H
  • 15.
    (7) Data TransferInstructions • SHLD 16-bit address • Store H-L register pair in memory. • The contents of register L are stored into memory location specified by the 16-bit address. • The contents of register H are stored into the next memory location. • Example: SHLD 2500 H
  • 16.
    H 30 L60 BEFORE EXECUTION AFTER EXECUTION 60 30 H 30 L 60 SHLD 2500H2500H 2500H 204FH 2502H 204FH 2502H
  • 17.
    (8) Data TransferInstructions • XCHG • The contents of register H are exchanged with the contents of register D. • The contents of register L are exchanged with the contents of register E. • Example: XCHG
  • 18.
    D 20 E40 H 70 L 80 D 70 E 80 H 20 L 40 BEFORE EXECUTION AFTER EXECUTION XCHG
  • 19.
    (9) Data TransferInstructions • SPHL • Move data from H-L pair to the Stack Pointer (SP) • This instruction loads the contents of H-L pair into SP. • Example: SPHL
  • 20.
    H 25 L00 SP BEFORE EXECUTION AFTER EXECUTION H 25 L 00 SP 2500 SPHL
  • 21.
    (10) Data TransferInstructions • XTHL • Exchange H–L with top of stack • The contents of L register are exchanged with the location pointed out by the contents of the SP. • The contents of H register are exchanged with the next location (SP + 1). • Example: XTHL
  • 22.
    H 30 L 40 SP 2700 BEFORE EXECUTION 50 60 H 60 L 50 SP2700 40 30 AFTER EXECUTION XTHL 2700H 2701H 2702H 2700H 2701H 2702H L=SP H=(SP+1)
  • 23.
    (11) Data TransferInstructions • PCHL • Load program counter with H-L contents • The contents of registers H and L are copied into the program counter (PC). • The contents of H are placed as the high-order byte and the contents of L as the low-order byte. •
  • 24.
    H 60 L 00 PC BEFORE EXECUTION AFTEREXECUTION H 60 L 00 PC 6000 PCHL
  • 25.
    (12) Data TransferInstructions • IN 8-bit port address • Copy data to accumulator from a port with 8- bit address. • The contents of I/O port are copied into accumulator. • Example: IN 80 H
  • 26.
    10 A 10 A10 BEFORE EXECUTION AFTER EXECUTION IN 80H PORT 80H PORT 80H
  • 27.
    (13) Data TransferInstructions • OUT 8-bit port address • Copy data from accumulator to a port with 8- bit address • The contents of accumulator are copied into the I/O port. • Example: OUT 50 H
  • 28.
    10 A 40 40A 40 BEFORE EXECUTION AFTER EXECUTION OUT 50H PORT 50H PORT 50H
  • 29.
    Arithematic Instructions • Theseinstructions perform the operations like: • Addition • Subtraction • Increment • Decrement
  • 30.
    (1) Arithematic Instructions •ADD R • ADD M • The contents of register or memory are added to the contents of accumulator. • The result is stored in accumulator. • If the operand is memory location, its address is specified by H-L pair. • Example: ADD C or ADD M
  • 31.
    B C 30 DE H L B C 30 D E H L AFTER EXECUTIONBEFORE EXECUTION B C D E H 20 L 50 B C D E H 20 L 50 AFTER EXECUTIONBEFORE EXECUTION A 20 A 50A 20 A 30 ADD C A=A+R ADD M A=A+M 10 10 2050 2050
  • 32.
    (2) Arithematic Instructions •ADC R • ADC M • The contents of register or memory and Carry Flag (CY) are added to the contents of accumulator. • The result is stored in accumulator. • If the operand is memory location, its address is specified by H-L pair. All flags are modified to reflect the result of the addition. • Example: ADC C or ADC M
  • 33.
    B C 20 DE H L A 50 B C 20 D E H L A 71 AFTER EXECUTIONBEFORE EXECUTION ADC C A=A+R+CY CY 1 CY 0 CY 1 CY 0 A 20 A 51 H 20 L 50 H 20 L 50 ADC M A=A+M+CY AFTER EXECUTIONBEFORE EXECUTION 30 302050H 2050H
  • 34.
    (3) Arithematic Instructions •ADI 8-bit data • The 8-bit data is added to the contents of accumulator. • The result is stored in accumulator. • Example: ADI 10 H
  • 35.
    A 50 A60 AFTER EXECUTIONBEFORE EXECUTION ADI 10H A=A+DATA(8)
  • 36.
    (4) Arithematic Instructions •ACI 8-bit data • The 8-bit data and the Carry Flag (CY) are added to the contents of accumulator. • The result is stored in accumulator. • Example: ACI 20 H
  • 37.
    CY 1 CY0 A 30 A 51 AFTER EXECUTIONBEFORE EXECUTION ACI 20H A=A+DATA (8)+CY
  • 38.
    (5) Arithematic Instructions •DAD Register pair • The 16-bit contents of the register pair are added to the contents of H-L pair. • The result is stored in H-L pair. • If the result is larger than 16 bits, then CY is set. • Example: DAD D
  • 39.
    AFTER EXECUTIONBEFORE EXECUTION BC D 10 E 20 H 20 L 50 SP B C D 10 E 20 H 30 L 70 SP CY 0 CY 0 DAD D HL=HL+R
  • 40.
    (6) Arithematic Instructions •SUB R • SUB M • The contents of the register or memory location are subtracted from the contents of the accumulator. • The result is stored in accumulator. • If the operand is memory location, its address is specified by H-L pair. • Example: SUB B or SUB M
  • 41.
    B 30 C DE H L A 50 B 30 C D E H L A 20 AFTER EXECUTIONBEFORE EXECUTION SUB B A=A-R AFTER EXECUTIONBEFORE EXECUTION A 50 A 40 H 10 L 20 H 10 L 20 SUB M A=A-M 10 10 1020H1020H
  • 42.
    (7) Arithematic Instructions •SBB R • SBB M • The contents of the register or memory location and Borrow Flag (i.e.CY) are subtracted from the contents of the accumulator. • The result is stored in accumulator. • If the operand is memory location, its address is specified by H-L pair. • Example: SBB C or SBB M
  • 43.
    B C 20 DE H L A 40 CY 1 B C 20 D E H L A 19 CY 0 SBB C A=A-R-CY AFTER EXECUTIONBEFORE EXECUTION CY 1 A 50 H 20 L 50 CY 0 A 39 H 20 L 50 AFTER EXECUTIONBEFORE EXECUTION SBB M A=A-M-CY 10 10 2050H 2050H
  • 44.
    (8) Arithematic Instructions •SUI 8-bit data • OPERATION: A=A-DATA(8) • The 8-bit immediate data is subtracted from the contents of the accumulator. • The result is stored in accumulator. • Example: SUI 45 H
  • 45.
    (9) Arithematic Instructions •SBI 8-bit data • The 8-bit data and the Borrow Flag (i.e. CY) is subtracted from the contents of the accumulator. • The result is stored in accumulator. • Example: SBI 20 H
  • 46.
    CY 1 A 50 AFTEREXECUTIONBEFORE EXECUTION CY 0 A 29SBI 20H A=A-DATA(8)-CY
  • 47.
    (10) Arithematic Instructions •INR R • INR M • The contents of register or memory location are incremented by 1. • The result is stored in the same place. • If the operand is a memory location, its address is specified by the contents of H-L pair. • Example: INR B or INR M
  • 48.
    B 10 C DE H L A B 11 C D E H L A AFTER EXECUTIONBEFORE EXECUTION H 20 L 50 H 20 L 50 30 31 2050H 2050H AFTER EXECUTIONBEFORE EXECUTION INR M M=M+1 B 10 C D E H L A BEFORE EXECUTION INR B R=R+1
  • 49.
    (11) Arithematic Instructions •INX Rp • The contents of register pair are incremented by 1. • The result is stored in the same place. • Example: INX H
  • 50.
    B C D E H10 L 20 B C D E H 11 L 21 AFTER EXECUTIONBEFORE EXECUTION SPSP INX H RP=RP+1
  • 51.
    (12) Arithematic Instructions •DCR R • DCR M • The contents of register or memory location are decremented by 1. • The result is stored in the same place. • If the operand is a memory location, its address is specified by the contents of H-L pair. • Example: DCR E or DCR M
  • 52.
    B C D E19 H L A AFTER EXECUTION B C D E 20 H L A BEFORE EXECUTION DCR E R=R-1 H 20 L 50 H 20 L 5021 20 2050H AFTER EXECUTIONBEFORE EXECUTION DCR M M=M-1 2050H
  • 53.
    (13) Arithematic Instructions •DCX Rp • The contents of register pair are decremented by 1. • The result is stored in the same place. • Example: DCX D
  • 54.
    B C D 10E 20 H L B C D 10 E 19 H L AFTER EXECUTIONBEFORE EXECUTION SPSP DCX D RP=RP-1
  • 55.
    (1) Logical Instructions •ANA R • ANA M • AND specified data in register or memory with accumulator. • Store the result in accumulator (A). • Example: ANA B, ANA M
  • 56.
    B 10 C DE H L A B 0F C D E H L A 0A AFTER EXECUTION ANA B A=A and R B 0F C D E H L A AA BEFORE EXECUTION CY AC CY 0 AC 1 AFTER EXECUTIONBEFORE EXECUTION CY AC CY 0 AC 1 A 11A 55 H 20 L 50 H 20 L 50 B3 B3 2050H ANA M A=A and M 2050H 1010 1010=AAH 0000 1111=0FH 0000 1010=0AH 0101 0101=55H 1011 0011=B3H 0001 0001=11H
  • 57.
    (2) Logical Instructions •ANI 8-bit data • AND 8-bit data with accumulator (A). • Store the result in accumulator (A) • Example: ANI 3FH
  • 58.
    CY AC A B3 AFTEREXECUTIONBEFORE EXECUTION CY 0 AC 1 A 33 ANI 3FH A=A and DATA(8) 1011 0011=B3H 0011 1111=3FH 0011 0011=33H
  • 59.
    (3) Logical Instructions •XRA Register (8-bit) • XOR specified register with accumulator. • Store the result in accumulator. • Example: XRA C
  • 60.
    B 10 C DE H L A B C 2D D E H L A 87 AFTER EXECUTION XRA C A=A xor R B C 2D D E H L A AA BEFORE EXECUTION CY AC CY 0 AC 0 1010 1010=AAH 0010 1101=2DH 1000 0111=87H
  • 61.
    (4) Logical Instructions •XRA M • XOR data in memory (memory location pointed by H-L pair) with Accumulator. • Store the result in Accumulator. • Example: XRA M
  • 62.
    H 20 L50 A 55 AFTER EXECUTION XRA M A=A xor M BEFORE EXECUTION CY AC CY 0 AC 0 0101 0101=55H 1011 0011=B3H 1110 0110=E6H H 20 L 50 A E6 B3 B3 2050H 2050H
  • 63.
    (5) Logical Instructions •XRI 8-bit data • XOR 8-bit immediate data with accumulator (A). • Store the result in accumulator. • Example: XRI 39H
  • 64.
    CY AC A B3 AFTEREXECUTIONBEFORE EXECUTION CY 0 AC 0 A 8A XRI 39H A=A xor DATA(8) 1011 0011=B3H 0011 1001=39H 1000 1010=8AH
  • 65.
    (6) Logical Instructions •ORA Register • OR specified register with accumulator (A). • Store the result in accumulator. • Example: ORA B
  • 66.
    AFTER EXECUTIONBEFORE EXECUTION CYAC ORA B A=A or R 1010 1010=AAH 0001 0010=12H 1011 1010=BAH B 12 C D E H L A AA B 12 C D E H L A BA CY 0 AC 0
  • 67.
    (7) Logical Instructions •ORA M • OR specified register with accumulator (A). • Store the result in accumulator. • Example: ORA M
  • 68.
    AFTER EXECUTIONBEFORE EXECUTION CYAC ORA M A=A or M 0101 0101=55H 1011 0011=B3H 1111 0111=F7H H 20 L 50 A 55 A F7 CY 0 AC 0 H 20 L 50 B3 B3 2050H 2050H
  • 69.
    (8) Logical Instructions •ORI 8-bit data • OR 8-bit data with accumulator (A). • Store the result in accumulator. • Example: ORI 08H
  • 70.
    CY AC A B3 AFTEREXECUTIONBEFORE EXECUTION CY 0 AC 0 A BB ORI 08H A=A or DATA(8) 1011 0011=B3H 0000 1000=08H 1011 1011=BBH
  • 71.
    (9) Logical Instructions •CMP Register • CMP M • Compare specified data in register or memory with accumulator (A). • Store the result in accumulator. • Example: CMP D or CMP M
  • 72.
    B 10 C DE H L A B C D B9 E H L A B8 AFTER EXECUTION CMP D A-R B C D B9 E H L A B8 BEFORE EXECUTION CY Z CY 0 Z 0 AFTER EXECUTIONBEFORE EXECUTION CY Z CY 0 Z 1 A B8A B8 H 20 L 50 H 20 L 50 B8 B8 2050H CMP M A-M 2050H A>R: CY=0,Z=0 A=R: CY=0,Z=1 A<R: CY=1,Z=0 A>M: CY=0,Z=0 A=M: CY=0,Z=1 A<M: CY=1,Z=0
  • 73.
    (10) Logical Instructions •CPI 8-bit data • Compare 8-bit immediate data with accumulator (A). • Store the result in accumulator. • Example: CPI 30H
  • 74.
    CY Z A BA AFTEREXECUTIONBEFORE EXECUTION CY 0 AC 0 A BA CPI 30H A-DATA A>DATA: CY=0,Z=0 A=DATA: CY=0,Z=1 A<DATA: CY=1,Z=0 1011 1010=BAH
  • 75.
    (11) Logical Instructions •STC • It sets the carry flag to 1. • Example: STC
  • 76.
    CY 0 AFTER EXECUTIONBEFOREEXECUTION CY 1STC CY=1
  • 77.
    (12) Logical Instructions •CMC • It complements the carry flag. • Example: CMC
  • 78.
    CY 1 AFTER EXECUTIONBEFOREEXECUTION CY 0 CMC
  • 79.
    (13) Logical Instructions •CMA • It complements each bit of the accumulator. • Example: CMA
  • 80.
    (14) Logical Instructions •RLC • Rotate accumulator left • Each binary bit of the accumulator is rotated left by one position. • Bit D7 is placed in the position of D0 as well as in the Carry flag. • CY is modified according to bit D7. • Example: RLC.
  • 81.
    B7 B6 B5B4 B3 B2 B1 B0CY B6 B5 B4 B3 B2 B1 B0 B7B7 AFTER EXECUTION BEFORE EXECUTION
  • 82.
    (15) Logical Instructions •RRC • Rotate accumulator right • Each binary bit of the accumulator is rotated right by one • position. • Bit D0 is placed in the position of D7 as well as in the Carry flag. • CY is modified according to bit D0. • Example: RRC.
  • 83.
    B7 B6 B5B4 B3 B2 B1 B0 CY B0 B7 B6 B5 B4 B3 B2 B1 B0 AFTER EXECUTION BEFORE EXECUTION
  • 84.
    (16) Logical Instructions •RAL • Rotate accumulator left through carry • Each binary bit of the accumulator is rotated left by one position through the Carry flag. • Bit D7 is placed in the Carry flag, and the Carry flag is placed in the least significant position D0. • CY is modified according to bit D7. • Example: RAL.
  • 85.
    B7 B6 B5B4 B3 B2 B1 B0CY B6 B5 B4 B3 B2 B1 B0 CYB7 AFTER EXECUTION BEFORE EXECUTION
  • 86.
    (17) Logical Instructions •RAR • Rotate accumulator right through carry • Each binary bit of the accumulator is rotated left by one position through the Carry flag. • Bit D7 is placed in the Carry flag, and the Carry flag is placed in the least significant position D0. • CY is modified according to bit D7. • Example: RAR
  • 87.
    B7 B6 B5B4 B3 B2 B1 B0 CY CY B7 B6 B5 B4 B3 B2 B1 B0 AFTER EXECUTION BEFORE EXECUTION
  • 88.
    Branching Instructions • Thebranch group instructions allows the microprocessor to change the sequence of program either conditionally or under certain test conditions. The group includes, • (1) Jump instructions, • (2) Call and Return instructions, • (3) Restart instructions,
  • 89.
    (1) Branching Instructions •JUMP ADDRESS • BEFORE EXECUTION AFTER EXECUTION • Jump unconditionally to the address. • The instruction loads the PC with the address given within the instruction and resumes the program execution from specified location. • Example: JMP 200H PC PC 2000JMP 2000H
  • 90.
  • 91.
    (2) Branching Instructions •CALL address • Call unconditionally a subroutine whose starting address given within the instruction and used to transfer program control to a subprogram or subroutine. • Example: CALL 2000H
  • 92.
    Conditional Calls Instruction CodeDescription Condition for CALL CC Call on carry CY=1 CNC Call on not carry CY=0 CP Call on positive S=0 CM Call on minus S=1 CPE Call on parity even P=1 CPO Call on parity odd P=0 CZ Call on zero Z=1 CNZ Call on not zero Z=0
  • 93.
    (3) Branching Instructions •RET • Return from the subroutine unconditionally. • This instruction takes return address from the stack and loads the program counter with this address. • Example: RET
  • 94.
    SP 27FD PC 00 62 SP 27FF PC6200 00 62 AFTER EXECUTIONBEFORE EXECUTION RET 27FFH 27FEH 27FDH 27FFH 27FEH 27FDH
  • 95.
    (4) Branching Instructions •RST n • Restart n (0 to 7) • This instruction transfers the program control to a specific memory address. The processor multiplies the RST number by 8 to calculate the vector address. • Example: RST 6
  • 96.
    SP 3000 PC 2000 SP2999 PC 0030 01 20 AFTER EXECUTIONBEFORE EXECUTION RST 6 3000H 2FFFH 2FFEH SP-1 ADDRESS OF THE NEXT INSTRUCTION IS 2001H 3000H 2FFFH 2FFEH
  • 97.
    Vector Address ForReturn Instructions Instruction Code Vector Address RST 0 0*8=0000H RST 1 0*8=0008H RST 2 0*8=0010H RST 3 0*8=0018H RST 4 0*8=0020H RST 5 0*8=0028H RST 6 0*8=0030H Rst 7 0*8=0038H
  • 98.
    (1) Control Instructions •NOP • No operation • No operation is performed. • The instruction is fetched and decoded but no operation is executed. • Example: NOP
  • 99.
    (2) Control Instructions •HLT • Halt • The CPU finishes executing the current instruction and halts any further execution. • An interrupt or reset is necessary to exit from the halt state. • Example: HLT
  • 100.
    (3) Control Instructions RST5.5Mask RST6.5 Mask RST7.5 Mask } 0 – Available (not masked) 1 - Masked Mask Set Enable 0 - Ignore bits 0-2 1 - Set the masks according to bits 0-2 Force RST7.5 Flip Flop to reset Not Used Enable Serial Data 0 - Ignore bit 7 1 - Send bit 7 to SOD pin Serial Data Output While EI/DI instructions enable/disable all maskable interrupts at once, SIM instruction can be used to selectively mask (or disable) 3 out of 4 maskable interrupts which are RST7.5,RST6.5 & RST5.5. Fourth maskable interrupt INTR can only be enabled/disabled by using EI/DI instructions. SIM instruction can be used to perform two different tasks: 1. For masking of 3 interrupts 2. For serial data transmission (Each time a SIM instruction is executed, 7th bit of Accumulator is automatically copied to SOD pin of 8085)
  • 101.
    Example of howto use SIM instruction in any program Example problem:- Set the interrupt masks so that RST5.5 is enabled, RST6.5 is masked & RST7.5 is enabled. • We can determine the bit pattern as per format of SIM instruction given below: - Enable 5.5 - Disable 6.5 - Enable 7.5 - Allow setting the masks - Don’t reset the flip flop - Bit 5 is not used - Don’t use serial data - Serial data is ignored bit 0 = 0 bit 1 = 1 bit 2 = 0 bit 3 = 1 bit 4 = 0 bit 5 = 0 bit 6 = 0 bit 7 = 0 0 0 0 0 1 0 1 0 Contents of accumulator are: 0AH EI MVI A, 0A SIM • Now use following set of instructions to implement required masks using SIM  First of all enable all interrupts using EI instruction without using which SIM wouldn't be effective  Move the prepared bit pattern (0AH here) to Accumulator  SIM instruction interprets contents of Accumulator same as per the above format & performs the desired operation of masking the respective interrupts
  • 102.
    (4) Control Instructions 76 5 4 3 2 1 0 RST5.5 Mask RST6.5 Mask RST7.5 Mask } Indicates current masking status of interrupts set by user (using SIM) 0 - Available 1 - Masked Status of Interrupt Enable Flip Flop: 1 Set 0 Reset Serial Data In RST5.5 Interrupt Pending RST6.5 Interrupt Pending RST7.5 Interrupt Pending Like SIM instruction, RIM can be used to perform two different tasks: 1. To read current status of 3 maskable interrupts 2. For serial data reception (Each time a SIM instruction is executed, the bit present on SID pin of 8085 is automatically moved to 7th bit of the Accumulator) Pending Interrupts: Since the 8085 has 5 interrupt lines, another interrupts may occur while an interrupt is being attended and thus remain pending. Such interrupts are called pending interrupts & would be attended as soon as ISR of current interrupt is executed. A programmer may know the status (current value of high/low on the respective interrupt pin) of such interrupts anytime by using RIM instruction.