You are on page 1of 16

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

You might also like