Module – 11
Lecture-2
Instruction Set of Intel 8085 microprocessor
Data Transfer Group:
This group of instructions transfers data to and from registers and memory. Condition
flags are not affected by any instruction in this group.
Move Register : MOV r1 , r2 ( r1 ) � ( r2 )
The content of register r2 is moved to register r1 .
These are single byte instructions and the format is
01 DDD SSS
D D D : Represents the destination register
S S S : Represents the source register.
The bit pattern designating one of the registers A, B, C, D, E, H, L.
D D D or S S S Register name
111 A
000 B
001 C
010 D
011 E
100 H
101 L
For example :
01 111 000
This machine instruction indicates
MOV A, B
i.e. the contents of register B will be moved to accumulator A.
The op-code of this machine instruction in hexadecimal is
78
and this is a single byte instruction
MOV r, M (Move from memory)
( r ) � ( ( H ) ( L) )
The content of the memory location, whose address is in registers H and L, is moved to
register r.
01 DDD 110
It is observed that there is no register available for the encoding 1 1 0 . So, in source field
S S S, the contents 1 1 0 indicates a memory access.
Example:
Assume that the contents of H is 10 H and L is 00 H . Then the instruction
01111 110
Moves the contents of memory location 1000 H to accumulator. The op-code of this
machine instruction in hexadecimal is 7E
MVI r, data (Move immediate)
( r ) � ( byte 2 )
It is a 2-byte instruction, the content of the byte 2 of the instruction is moved to register r.
00 DDD 110
data
Example
0000 0110
00110011
The data 0 0 1 1 0 0 1 1 i.e 33H will be moved to register B.
The machine instruction in hexadecimal is
06 H 33H
MVI M, data (Move to memory immediate)
( ( H ) ( L ) ) � ( byte 2 )
The content of byte 2 of the instruction is moved to the memory location whose address
is in register H and L .
00110110
data
L �I rp , data 16 (Load register pair immediate)
( rh ) � ( byte3)
( rl ) � ( byte 2 )
Byte 3 of the instruction is moved in to the higher order register ( rh ) of the register pair
rp . Byte 2 of the instruction is moved into the low-order register ( rl ) of the register pair
rp .
00 RP 0001
low-order data
high-order data
The bit pattern in RP designating one of the register pairs B, D, H & SP :
RP Register-Pair
00 B-C
01 D-E
10 H-L
11 SP
For example:
0010 0001
0000 0000
00010000
This instruction loads the register pair H-L by 1000 H .
The machine instruction in hexadecimal format is
21H 00 H 10 H
LDA addr (Load accumulator direct)
A � ((byte 3) (byte 2))
The contents of the memory location, whose address is specified in byte 2 and byte 3 of
the instruction, is moved to register A. It is a three byte instruction.
0 0 11 1 0 1 0
low-order Adress
high-order Address
The instruction 3 AH 00 H 20 H moves the contents of memory location 2000 H to
accumulator.
STA addr (store accumulator direct)
((byte-3) (byte-2)) � ( A )
The content of the accumulator is moved to the memory location whose address is
specified in byte 2 and byte 3 of the instruction.
0 0 11 0 0 1 0
low-order Adress
high-order Address
The instruction 32 H10 H 20 H moves the contents of accumulator into memory location
2010 H
LHLD addr (Load H and L direct)
(L) � ((byte 3)(byte 2)
(H) � ((byte 3)(byte 2) +1)
The contents of the memory location, whose address is specified in byte 2 and byte 3 of
the instruction, is moved to register L. The content of the next memory location is moved
to register H.
0 0 1 01 0 1 0
low-order Adress
high-order Address
SHLD addr (store H and L direct)
((byte 3) (byte 2)) � (L)
((byte 3) (byte 2) +1) � (H)
The content of register L is moved to the memory location whose address is specified in
byte 2 and byte 3. The content of register H is moved to the next memory location.
00 100 010
low-order Adress
high-order Address
For example:
22 H 00 H 10 H
This instruction moves the content of register L to the memory location 1000 H and
moves the content of register H to the memory location 1001H
LDA �((rp))
The content of memory location, whose address is in the register pair rp, is moved to
accumulator.
( ( rp ) ) � ( A)
The content of register A is moved to the memory location whose address is in the
register pair rp
00 RP 0 010
XCHG (Exchange H and L with D and E)
( H ) � ( D)
( L) � ( E )
The contents of register H and L are exchanged with the contents of register D and E.
11101011
Arithmetic Group:
This group of instructions performs arithmetic operations on data in registers and
memory.
Most of the instructions in this group affect the flag bits according to the standard rules.
All subtraction operations are performed via 2’s complement arithmetic and set the carry
flag to one to indicates a borrow and clear it to indicate no borrow.
ADD r (Add Register)
( A) � ( A) + ( r )
The content of register r is added to the content of the accumulator. The result is placed in
the accumulator.
10000 SSS
e.g.
1 0 0 0 0 0 0 1 indicates the operation ( A) � ( A) + ( C ) ( ADD C )
because the binary
coding for register C is 001. The op-code for ADD C in hexadecimal is 81H .
The content of accumulator is added to the content of register C, and the result is stored
in accumulator.
Depending on the result of the operation, the flags bits are set or reset.
If the result of the operation is zero, then the Z flag is set to 1. Generally it will follow the
standard rule to set the flags.
The other operation in arithmetic group is listed below.
Now you are in a position to interprets the meaning of each instruction.
Addition group
Operation Operation OP code Flags affected
Performed
ADD r ( A) � ( A) + ( r ) 10000SSS Z, S, P, CY, AC
(Add register)
ADD M ( A) � ( A) + ( ( H ) ( L ) ) 10000110 Z, S, P, CY, AC
(Add memory)
ADI data ( A) � ( A ) + byte2 11000110 Z, S, P, CY, AC
(Add Immediate) (data)
ADC r ( A) � ( A) + ( r ) + ( CY ) 10001SSS Z, S, P, CY, AC
(Add register
with carry
AMC M ( A) � ( A) + ( ( H ) ( L ) ) + ( CY ) 10001110 Z, S, P, CY, AC
(Add memory
with carry
ACI data ( A ) � ( A) + byte2 + ( CY ) 11001110 Z, S, P, CY, AC
(Add Immediate (data)
with carry)
Subtraction group
Operation Operation OP code Flags affected
Performed
SUB r ( A) � ( A) - ( r ) 1 0 0 10 S S S Z, S, P, CY, AC
(Subtract Register)
SUB M ( A) � ( A) - ( ( H ) ( L ) ) 10010110 Z, S, P, CY, AC
(Subtract Memory)
SUI data ( A) � ( A ) - byte2 11010110 Z, S, P, CY, AC
(Subtract (data)
Immediate)
SBB r ( A) � ( A) - ( r ) - ( CY ) 10010SSS Z, S, P, CY, AC
(Subtract Register
with borrow)
SBB M ( A) � ( A) - ( ( H ) ( L ) ) - ( CY ) 100 11110 Z, S, P, CY, AC
(Subtract Memory
with borrow)
SBI data ( A ) � ( A) - byte2 - ( CY ) 11011110 Z, S, P, CY, AC
(Subtract (data)
immediate with
borrow)
Increment/Decrement group
Operation Operation OP code Flags affected
Performed
INR r ( r ) � ( r ) + ( 1) 00DDD100 Z, S, P, AC
(Increment
register)
INR M ( ( H ) ( L) ) � ( ( H ) ( L) ) +1 00110100 Z, S, P, AC
(Increment
memory)
DCR r ( r ) � ( r ) -1 00DDD101 Z, S, P, AC
(Decrement
register)
DCR M ( ( H ) ( L) ) � ( ( H ) ( L) ) -1 00110101 Z, S, P, AC
(Decrement
memory)
INX rp ( rh ) ( rl ) � ( rh ) ( rl ) + 1 00RP0011 None
(Increment register
pair)
DCX rp ( rh ) ( rl ) � ( rh ) ( rl ) - 1 00RP1011 None
(Decrement
register pair)
DAD rp ( H ) ( L ) � ( H ) ( L ) + ( rh ) ( rl ) 00RP1001 CY
(Add register pair
to H & L)
DAA The eight bit number in the 00100111 Z,S,P,AC,C
(Decimal Adjust accumulator is adjusted to
Accumulator) form two four-bit Binary-
coded decimal digits.
Logical group:
This group of instructions perform logical (Boolean) operations on data in registers and
memory and on condition flags.
All instructions in this group affect the Zero, Sign, Parity, Auxiliary carry and carry flags
according to the standard rules.
Operation Operation Op-code
Performed
ANA r ( A) � ( A) �( r ) 10100SSS
(AND Register)
ANA M ( A) � ( A) �( ( H ) ( L ) ) 1010011D
(AND memory)
ANI data ( A ) � ( A) �byte 2 11100110
(AND immediate) (data)
XRA r ( A) � ( A) �( r ) 10101SSS
(Exclusive OR Register)
XRA M ( A ) � ( A) �( ( H ) ( L ) ) 10101110
(Exclusive OR memory)
XRI data ( A) � ( A) � byte 2 11101110
(Exclusive OR immediate) (data)
ORA r ( A) � ( A) �( r ) 10110SSS
(OR Register)
ORA M ( A) � ( A) �( ( H ) ( L ) ) 10110110
(OR memory)
ORI data ( A ) � ( A) �byte 2 11110110
(OR immediate)
CMP r ( A) - ( r ) 10111SSS
(Compare register)
the accumulator remains
unchanged.
Z flag is set to 0 if ( A ) = ( r )
CY flag is set to 1 if ( A ) < ( r )
CMP M ( A) - ( ( H ) ( L ) ) 10111110
(Compare memory)
CPI data ( A ) - byte 2 11111110
(Compare immediate) data
RLC ( An+1 ) � ( An ) , ( A0 ) � ( A7 ) 00000111
(Rotate left)
( CY ) � ( A7 )
RRC ( An ) � ( An +1 ) , ( A7 ) � ( A0 ) 00001111
(Rotate right)
( CY ) � A0
RAL ( An+1 ) � ( An ) , ( CY ) � ( A7 ) 00010111
(Rotate left through carry)
( A0 ) � ( CY )
RAR ( An ) � ( An +1 ) , ( CY ) � ( A0 ) 00011111
(Rotate right through carry)
( A7 ) � ( CY )
CMA ( A) � ( A ) 00101111
(Complement accumulator)
CMC ( CY ) � ( CY ) 00111111
(complement carry)
STC ( CY ) � 1 00110111
(Set carry)
Branch group :
This group of instructions alter normal sequential flow of the program.
Condition flags are not affected by any instruction in this group.
There are two types of branch instructions- unconditional and conditional.
Unconditional transfers simply load the program counter with the new address of the
instruction from where the execution starts again.
Conditional transfer examine the status of one of the four processor flags to determine if
the specified branch is to be executed.
The conditions that may be specified are as follows:
Condition CCC
NZ- not zero (Z = 0) 000
Z- zero (Z =1 ) 001
NC- no carry (CY = 0) 010
C- carry (CY = 1) 011
PO- Parity odd (P = 0) 100
PE – parity even (P = 1) 101
P= plus ( S = 0) 110
M – Minus ( S = 1) 111
JMP addr (Jump)
( PC ) � ( byte 3) ( byte 2 )
Control is transferred to the instruction whose address is specified in byte 3 and byte 2 of
the current instruction.
1 1 0 0 0 0 1 1
Low-order address
High-order address
J condition addr (Conditional jump)
If (C C C) then
( PC ) � ( byte 3) ( byte2 )
If the specified condition is true, control is transferred to the instruction whose address is
specified in byte 3 and byte 2 of the current instruction, otherwise control continuous
sequentially.
1 1 C C C 0 1 0 1
Low-order address
High-order address
Example:
1 1 0 0 1 0 1 1, this op-code indicates JZ, ie. Jump on zero. It will check the zero flag bit,
and if the Z flag is 1, control will jump to specified address.
In hex, this op-code is CBH
Therefore, CBH 00 H 20 H , for this instruction,
It will check the Z flag, if Z flag is set to 1, then program counter will be loaded with
2000 H , otherwise control sequentially.
CALL addr (Call)
( ( SP ) - 1) � ( PCH )
( ( SP ) - 2 ) � ( PCL )
( SP ) � ( SP ) - 2
( PC ) � ( byte 3) ( byte 2 )
1 1 0 0 1 1 0 1
Low-order address
High-order address
C condition addr (condition call)
If ( CCC ) ,
( ( SP ) - 1) � ( PCH )
( ( SP ) - 2 ) � ( PCL )
( SP ) � ( SP ) - 2
( PC ) � ( byte 3) ( byte 2 )
1 1 C C C 1 0 0
Low-order address
High-order address
RET (Return)
( PCL ) � ( ( SP ) )
( PCH ) � ( ( SP ) + 1)
( SP ) � ( SP ) + 2
1 1 0 0 1 0 0 1
R condition (conditional Return)
If ( CCC ) ,
( PCL ) � ( ( SP ) )
( PCH ) � ( ( SP ) + 1)
( SP ) � ( SP ) + 2
1 1 C C C 0 0 0
RST n (Restart)
( ( SP ) - 1) � ( PCH )
( ( SP ) - 2 ) � ( PCL )
( SP ) � ( SP ) - 2
( PC ) � 8 �( NNN )
Control is transferred to the instruction whose address is eight times the content of NNN.
1 1 N N N 1 1 1
PCHL (Jump H and L indirect – move H and L tp PC )
( PCH ) � ( H )
( PCL ) � ( L )
1 1 1 0 1 0 0 1
Stack, p 0 and machine control group
This group of instructions performs p 0 , manipulates the stack, and alters internal control
flags.
PUSH rp (Push)
( ( SP ) - 1) � ( rh )
( ( SP ) - 2 ) � ( rl )
( SP ) � ( SP ) � 2
1 1 R P 0 1 0 1
PUSH PSW (Push processor status word)
( ( SP ) - 1) � ( A)
( ( SP ) - 2 ) � ( CY ) , ( ( SP ) - 2 ) � X
0 1
( ( SP ) - 2 ) � ( P ) , ( ( SP ) - 2) � X
2 3
( ( SP ) - 2 ) � ( AC ) , ( ( SP ) - 2 ) � X
4 5
( ( SP ) - 2 ) � ( Z ) , ( ( SP ) - 2 ) � ( S )
6 7
( SP ) � ( SP ) - 2
1 1 1 1 0 1 0 1
FLAG WORD
D7 D6 D5 D4 D3 D2 D1 D0
S Z X AC X P X CY
POP rp (Pop)
( rl ) � ( ( SP ) )
( rh ) � ( ( SP ) + 1)
( SP ) � ( SP ) + 2
1 1 R P 0 0 0 1
POP PSW (Pop processor status word)
( CY ) � ( ( SP ) ) 0 , ( P ) � ( ( SP ) ) 2 ( AC ) � ( ( SP ) ) 4
( Z ) � ( ( SP ) ) 6 ( S ) � ( ( SP ) ) 7
( A ) � ( ( SP ) + 1)
( SP ) � ( SP ) + 2
XTHL ( Exchange stack top with H and L)
( L ) � ( ( SP ) )
( H ) � ( ( SP ) + 1)
1 1 1 0 0 0 1 1
SPHL Move HL to SP
( SP ) � ( H ) ( L )
1 1 1 1 1 0 0 1
IN port (Input)
( A) � ( data )
The data placed on the eight bit bi-directional data bus by the specified port is moved to
register A.
1 1 0 1 1 0 1 1
port
OUT port (output)
( data ) � ( A)
The content of register A is placed on the eight bit bi-directional data bus for transmission
to the specified port.
1 1 0 1 0 0 1 1
port
EI (Enable Interrupt)
The interrupt system is enabled following the execution of the next instruction. Interrupts
are not recognised during the EI instruction.
1 1 1 1 1 0 1 1
DI (Disable interrupt)
The interrupt system is disabled immediately following the execution of th DI instruction.
Interrupts are not recognized during the DI instruction.
1 1 1 1 0 0 1 1
HLT (Halt)
The processor is stopped.
0 1 1 1 0 1 1 0
NOP (No operation)
No operation is performed. The registers and flags are unaffected.
0 0 0 0 0 0 0 0
RIM (Read Interrupt Masks)
The RIM instruction loads data into the accumulator relating to interrupts and serial input.
0 0 1 0 0 0 0 0
Accumulator content after RIM
SID 17.5 16.5 15.5 IE M7.5 M6.5 M5.5
Serial
Interrupts Interrupt Interrupt masks
Input
pending Enable flags
data
SIM (Set interrupt masks)
The execution of SIM instruction uses the content of the accumulator to perform the
following functions
- Program the interrupt masks for the RST 7.5, 6.5 and 5.5 hardware interrupts
- Reset the edge-triggered RST 7.5 input latch
- Load the SOD output latch.
0 0 1 1 0 0 0 0