Unit-II Instruction Set and Programs for Intel 8085
-
Upload
khangminh22 -
Category
Documents
-
view
0 -
download
0
Transcript of Unit-II Instruction Set and Programs for Intel 8085
Unit-II Instruction Set and Programs for Intel 8085
• Following major topics have to covered in this unit
• Addressing modes of Intel 8085
• Classification of Instructions of Intel 8085
• Machine and Assembly Languages
• Basic assembly language programs of Intel 8085
Addressing Modes:
• Each instruction requires certain data on which it has to operate
• There are various techniques to specify data for instructions
• These techniques are called addressing modes
• The way of specifying data to be operated by an instruction is known as addressing modes
• Intel 8085 uses the following addressing modes:
• Direct addressing
• Register addressing
• Register Indirect addressing
• Immediate addressing
• Implicit addressing
Direct Addressing:
• In this mode of addressing the address of the operand (data) is given in the instruction itself
• Example are:
• STA 2500H: Store the content of the accumulator in the memory location 2500H
• 32, 00, 25: The instruction is in coded form
• LDA 26FFH: Load the content of the memory location 26FFH to the accumulator
• 3A, FF, 26: The instruction is in coded form
• IN 02: Read data from Port C
• DB, 02: The instruction is in coded form
Register Addressing:
• In this mode of addressing the operand is in one of the general purpose registers
• The opcode specifies the address of the register(s) in addition to the operation to be performed
• Example are:
• MOV A, B: Move the content of register B to register A
• 78: The instruction is in coded form
• ADD B: Add the content of register B to the content of register A [A] ← [A] + [B]
• 80: The instruction is in coded form
• SUB C: Subtract the content of register C from the content of register A [A] ← [A] – [C]
• 91: The instruction is in coded form
Register Indirect Addressing:
• In this mode of addressing the address of the operand is specified by a register pair
• Example are:
• MOV A, M: Move the content of the memory location, whose address is in H-L pair to the
accumulator
• 7E: The instruction is in coded form
• ADD M: Add the content of the memory location, whose address is in H-L pair, to the
content of the accumulator
• 86: The instruction is in coded form
• SUB M: Subtract the content of the memory location, whose address is in H-L pair, from the
content of the accumulator
• 96: The instruction is in coded form
Immediate Addressing:
• In this mode of addressing the operand (data) is specified within the instruction itself
• Example are:
• MVI A, 05: Move 05 in register A
• 3E, 05: The instruction is in coded form
• ADI 06: Add 06 to the content of the accumulator
• C6, 06: The instruction is in coded form
• LXI H, 2500: 2500 is 16-bit data which is given in the instruction itself to be loaded into H-L
pair
• 21, 00, 25: The instruction is in coded form
• SUI 06: Subtract 06 from the content of the accumulator
• D6, 06: The instruction is in coded form
Implicit Addressing:
• There are certain instructions which operate on the content of the accumulator
• Such instruction do not require the address of the operand
• Also, known as implied or inherent addressing mode
• Example are:
• CMA: complement the accumulator content
• he instruction is in co e form [A] ← [ A]
• RAL: Rotate accumulator left through carry
• 17: opcode [An+1] ← [An], [CS] ← [A7], [A0] ← [CS]
• RAR: Rotate accumulator right through carry
• 1F: The instruction is in coded form
[An] ← [An+1], [CS] ← [A0], [A7] ← [CS]
Instruction set of Intel 8085:
• Instruction is a command given to the computer to perform a specified operation on given
data
• The instruction set of a microprocessor is the collection of the instructions
• That the microprocessor is designed to execute
• These instructions have been classified into the following five groups
Classification of Intel 8085 Instructions:
• Data Transfer Group
• Arithmetic Group
• Logical Group
• Branch Control Group
• I/O and Machine Control Group
Data Transfer Group:
• Instructions which are used to transfer data in the following manner come under this group
• From one register to another register,
• From memory to register, or
• From register to memory
• Examples are: MOV, MVI, LXI, LDA, S A, etc….
• Data is transferred from the source to the destination without altering the content of the
source
S.
No
Instructions Meaning Flag Addressing
Modes
M/C
Cycle
T-
states
Description
1. MOV r1, r2 [r1]←[r ] none Register 1 4 Move the content of
one register to another
2. MOV r, M [r] ←[[H-L]] none Reg. Indirect 2 7 Move the content of
memory whose
address in H-L pair to
register
3. MOV M, r [[H-L]] ←[r] none Reg. Indirect 2 7 Move the content of
register to memory
whose address in H-L
pair
4. MVI r, data [r]← ata none Immediate 2 7 Move immediate data
to register r
5. MVI M, data [[H-L]] ← ata none Immediate/
Reg. Indirect
3 10 Move immediate data
to memory whose
address in H-L pair
6. LXI rp, data [r
p]← ata-16
[rH] ← 8-MSB
[rL]
← 8-LSB
none Immediate 3 10 Load register pair
immediate
7. LDA addr [A]← [a r] none Direct 4 13 Load accumulator
direct
8. STA addr [a r] ←[A] none Direct 4 13 Store accumulator
direct
9. LHLD addr [L]← [a r] [H]← [a r+1]
none Direct 5 16 Load H-L pair direct
10. SHLD addr [a r] ← [L] [a r+1] ← [H]
none Direct 5 16 Store H-L pair direct
11. LDA X rp [A]← [[r
p]] none Reg. Indirect 2 7 Load accumulator in-
direct
12. STAX rp [[r
p]] ←[A] none Reg. Indirect 2 7 Store accumulator in-
direct
13. XCHG [H-L]↔ [D-E] none Register 1 4 Exchange the content
of H-L with D-E
XCHG, LDAX rp and STAX rp
• Suppose before XCHG instruction
[H] = 35, [L] = 00 and [D] = 56, [E] = FF
• After XCHG instruction the result will be
[H] = 56, [L] = FF and [D] = 35, [E] = 00
• LDAX B will load the content of the memory location, whose address is in B-C pair to
accumulator
• Ex: LDAX B Suppose [B][C] = 2550H [B]=25 and [C] =50,
• Whatever the data stored at memory 2550H will load to accumulator
• STAX D will store the content of the accumulator in the memory location whose address is in
D-E pair
• Ex: STAX D Suppose [D][E] = 2655H [D]=26 and [E] =55 and Suppose [A] =FF
• FF will be stored at memory location 2655H
Arithmetic Group:
• Instructions of this group perform arithmetic operations such as
• Addition, subtraction
• Increment or decrement of the content of a register or memory
• Examples are: ADD, SUB, INR, DCR, DAD, etc….
• This group contains about 14 instructions
S.
No
Instructions Meaning Flag Addressing
Modes
M/C
Cycle
T-
states
Description
1. ADD r [A]←[A] + [r] all Register 1 4 Add register to
accumulator
2. ADD M [A]←[A] + [[H-
L]] all Reg. Indirect 2 7 Add memory whose
address in H-L pair to
accumulator
3. ADC r [A] ←[A] + [r]
+ [CS] all Register 1 4 Add register with
carry to accumulator
4. ADC M [A]← [A] + [[H-
L]] + [CS] all Reg. Indirect 2 7 Add memory whose
address in H-L pair
with carry to
accumulator
5. ADI data [A] ← [A]+ ata all Immediate 2 7 Add immediate data
to accumulator
6. ACI data [A]← [A] + data
+ [CS] all Immediate 2 7 Add with carry
immediate data to
accumulator
7. DAD rp [H-L]← [H-L] +
[rp]
CS Register 3 10 Add register pair to
H-L pair
8. SUB r [A] ←[A] – [r] all Register 1 4 Subtract register from
accumulator
9. SUB M [A] ← [A] –
[[H-L] all Reg. Indirect 2 7 Subtract memory
whose address in H-L
pair from accumulator
10. SBB r [A] ←[A] – [r] –
[CS] all Register 1 4 Subtract register from
accumulator with
borrow
11. SBB M [A] ← [A] –
[[H-L] – [CS] all Reg. Indirect 2 7 Subtract memory
whose address in H-L
pair from accumulator
with borrow
12. SUI data [A] ←[A] – data all Immediate 2 7 Subtract immediate
data from
accumulator
13. SBI data [A] ←[A] – data
– [CS] all Immediate 2 7 Subtract immediate
data from
accumulator with
borrow
14. INR r [r] ← [r] + 1 all
except
CS
Register 1 4 Increment register
content by 1
15. INR M [[H-L]] ←
[[H-L]] + 1
all
except
CS
Reg. Indirect 3 10 Increment memory
content by 1 whose
address in H-L pair
16. DCR r [r] ← [r] – 1 all
except
CS
Register 1 4 Decrement register
content by 1
17. DCR M [[H-L]] ←
[[H-L]] – 1
all
except
CS
Reg. Indirect 3 10 Decrement memory
content by 1 whose
address in H-L pair
18. INX rp [r
p] ←[r
p] + 1 none Register 1 6 Increment register
pair by 1
19. DCX rp [r
p] ←[r
p] – 1 none Register 1 6 Decrement register
pair by 1
20. DAA all Implicit 1 4 Decimal adjust
accumulator
DAA: Decimal Adjust Accumulator:
• DAA is use in the program after a ition instructions i.e. ADD, ADI, ADC etc…
• Result is placed in accumulator in hexadecimal
• The DAA instruction operates on result and gives the final result in decimal system
• It uses [CS] and [AC] for decimal adjustment
• 6 is added to 4 LSBs, if value lies A – F or [AC] = 1
• 6 is added to 4 MSBs, if value lies A – F or [CS] = 1
Example of DAA
• ADD 96D and 69D
Case 1:
96D = 1001 0110
69D = 0110 1001
FFH = 1111 1111
DAA + 0110 0110
= 0110 0101 = 01, 65D
Case 2:
84D = 1000 0100
92D = 1001 0010
16H = 0001 0110 and [CS ]= 1
DAA + 0110
= 0111 0110 = 01, 76D
Case 3:
48D = 0100 1000
39D = 0011 1001
81H = 1000 0001 and [AC ]= 1
DAA + 0110
= 1000 01101 = 0, 87D
Logical Group:
• Instructions of this group perform logical operations such as
• Logical AND, logical OR, Exclusive-OR
• Rotate or take complement of data in register or memory
• Examples are: ANA, ORA, XRA, CMP, RAR, etc…
• This group contains about 15 instructions
S.
No
Instructions Meaning Flag Addressing
Modes
M/C
Cycle
T-
states
Description
1. ANA r [A]←[A] ˄ [r] all,
CS=0, AC=1
Register 1 4 AND register with
accumulator
2. ANA M [A]←[A] ˄ [[H-
L]] all,
CS=0, AC=1
Reg. Indirect 2 7 AND memory whose
address in H-L pair
with accumulator
3. ANI data [A] ←[A] ˄ ata all,
CS=0, AC=1
Immediate 2 7 AND immediate data
with accumulator
4. ORA r [A]← [A] ˅ r all, CS=0,
AC=0
Register 1 4 OR register with
accumulator
5. ORA M [A] ← [A] ˅
[[H-L]] all, CS=0,
AC=0
Reg. Indirect 2 7 OR memory whose
address in H-L pair
with accumulator
6. ORI data [A]← [A] ˅ ata all, CS=0,
AC=0
Immediate 2 7 OR immediate data
with accumulator
7. XRA r [A]← [A] ˅ [r] all,
CS=0,
AC=0
Register 1 4 Exclusive –OR
register with
accumulator
8. XRA M [A] ←[A] ˅ [[H-
L]] all, CS=0,
AC=0
Reg. Indirect 2 7 Exclusive –OR
memory whose
address in H-L pair
with accumulator
9. XRI data [A] ← [A] ˅
data all, CS=0,
AC=0
Immediate 2 7 Exclusive –OR
immediate data with
accumulator
10. CMA [A] ← [ A] none Implicit 1 4 Complement the
accumulator
11. CMC [CS] ←[C S] CS Inherent 1 4 Complement the carry
status
12. STC [CS] ← 1 CS Inherent 1 4 Set Carry status
13. CMP r [A] – [r] all Register 1 4 Compare register with
accumulator, result
discarded
14. CMP M [A] – [[H-L]] all Reg. Indirect 2 7 Compare memory
whose address in H-L
pair with accumulator
15. CPI data [A] – data all Immediate 2 7 Compare immediate
data with accumulator
16. RLC [An+1]←[A
n],
[A0] ← [A
7],
[CS] ← [A7]
CS Implicit 1 4 Rotate accumulator
left
17. RRC [A
7] ← [A
0],
[CS] ← [A0] ,
[An]←[A
n + 1]
CS Implicit 1 4 Rotate accumulator
right
18. RAL [A
n+1]←[A
n],
[CS] ← [A7],
[A0] ← [CS]
CS Implicit 1 4 Rotate accumulator
left through carry
19. RAR [A
n]←[A
n + 1],
[CS] ← [A0],
[A7] ← [CS]
CS Implicit 1 4 Rotate accumulator
right through carry
RLC : Rotate Accumulator Left:
[An+1]←[An],
[A0] ← [A7],
[CS] ← [A7]
Diagram of RLC:
RRC : Rotate Accumulator Right:
[A7] ← [A0],
[CS] ← [A0] ,
[An]←[An + 1]
Diagram of RRC:
RAL : Rotate Accumulator Left through Carry:
[An+1]←[An],
[CS] ← [A7],
[A0] ← [CS]
Diagram of RAL:
RAR : Rotate Accumulator Right through Carry:
[An]←[An + 1],
[CS] ← [A0],
[A7] ← [CS]
Diagram of RAR:
Branch Control Group:
• This group includes the instructions for conditional and unconditional jump
• Subroutine call and return, and restart
• The instruction of this group change the normal sequence of the program
• Examples are: JMP, JC, CALL, CZ, RE , RS etc…
• This group contains about total 29 instructions, 9 instructions for each jump, call and return
S.
No
Instructions Meaning Flag Addressing
Modes
M/C
Cycle
T-
states
Description
1. JMP addr
(label) [PC]←label none Immediate 3 10 Unconditional jump:
jump to label
2. JZ addr
(label) [PC]←label Jump if Z = 1
none Immediate 2/3 7/10 Jump if the result is
zero
3. JNZ addr
(label) [PC]←label Jump if Z = 0
none Immediate 2/3 7/10 Jump if the result is
not zero
4 JC addr
(label) [PC]←label Jump if CS = 1
none Immediate 2/3 7/10 Jump if there is a
carry
5. JNC addr
(label) [PC]←label Jump if CS = 0
none Immediate 2/3 7/10 Jump if there is no
carry
6. JP addr
(label) [PC]←label Jump if S = 0
none Immediate 2/3 7/10 Jump if the result is
plus
7. JM addr
(label) [PC]←label Jump if S = 1
none Immediate 2/3 7/10 Jump if the result is
minus
8. JPE addr
(label) [PC]←label Jump if P = 1
none Immediate 2/3 7/10 Jump if even parity
9. JPO addr
(label) [PC]←label Jump if P = 0
none Immediate 2/3 7/10 Jump if odd parity
1. CALL addr
(label) [[SP] – 1]← [PCH], [[SP] – ]← [PCL], [SP] ←([SP] – 2), [PC]←label
none Immediate/
reg. indirect 5 18 Unconditional CALL:
call the subroutine by
label
2. CZ addr
(label) [[SP] – 1]← [PCH], [[SP] – ]← [PCL], [SP] ←([SP] – 2), [PC]←label
none Immediate/
reg. indirect 2/5 9/18 Call subroutine if the
result is zero, the zero
status Z = 1
3. CNZ addr
(label) [[SP] – 1]← [PCH], [[SP] – ]← [PCL], [SP] ←([SP] – 2), [PC]←label
none Immediate/
reg. indirect 2/5 9/18 Call subroutine if the
result is not zero, the
zero status Z = 0
4 CC addr
(label) [[SP] – 1]← [PCH], [[SP] – ]← [PCL], [SP] ←([SP] – 2), [PC]←label
none Immediate/
reg. indirect 2/5 9/18 Call subroutine if
there is carry, the
carry status CS = 1
5. CNC addr
(label) [[SP] – 1]← [PCH], [[SP] – ]← [PCL], [SP] ←([SP] – 2), [PC]←label
none Immediate/
reg. indirect 2/5 9/18 Call subroutine if
there is no carry, the
carry status CS = 0
6. CP addr
(label) [[SP] – 1]← [PCH], [[SP] – ]← [PCL], [SP] ←([SP] – 2), [PC]←label
none Immediate/
reg. indirect 2/5 9/18 Call subroutine if the
result is plus, the sign
status S= 0
7. CM addr
(label) [[SP] – 1]← [PCH], [[SP] – ]← [PCL], [SP] ←([SP] – 2), [PC]←label
none Immediate/
reg. indirect 2/5 9/18 Call subroutine if the
result is minus, the
sign status S= 1
8 CPE addr
(label) [[SP] – 1]← [PCH], [[SP] – ]← [PCL], [SP] ←([SP] – 2), [PC]←label
none Immediate/
reg. indirect 2/5 9/18 Call subroutine if
even parity, the parity
status P = 1
9. CPO addr
(label) [[SP] – 1]← [PCH], [[SP] – ]← [PCL], [SP] ←([SP] – 2), [PC]←label
none Immediate/
reg. indirect 2/5 9/18 Call subroutine if odd
parity, the parity
status P = 0
1. RET [PCL]← [[SP]], [PCH]← [[SP] + 1], [SP] ←([SP] + )
none reg. indirect 3 10 Unconditional return:
return from
subroutine
2. RZ addr
(label) [PCL]← [[SP]], [PCH]← [[SP] + 1], [SP] ←([SP] + )
none reg. indirect 1/3 6/12 Return from
subroutine if the
result is zero, the zero
status Z = 1
3. RNZ addr
(label) [PCL]← [[SP]], [PCH]← [[SP] + 1], [SP] ←([SP] + )
none reg. indirect 1/3 6/12 Return from
subroutine if the
result is not zero, the
zero status Z = 0
4 RC addr
(label) [PCL]← [[SP]], [PCH]← [[SP] + 1], [SP] ←([SP] + )
none reg. indirect 1/3 6/12 Return from
subroutine if there is
carry, the carry status
CS = 1
5. RNC addr
(label) [PCL]← [[SP]], [PCH]← [[SP] + 1], [SP] ←([SP] + )
none reg. indirect 1/3 6/12 Return from
subroutine if there is
no carry, the carry
status CS = 0
6. RP addr
(label) [PCL]← [[SP]], [PCH]← [[SP] + 1], [SP] ←([SP] + )
none reg. indirect 1/3 6/12 Return from
subroutine if the
result is plus, the sign
status S= 0
7. RM addr
(label) [PCL]← [[SP]], [PCH]← [[SP] + 1], [SP] ←([SP] + )
none reg. indirect 1/3 6/12 Return from
subroutine if the
result is minus, the
sign status S= 1
8 RPE addr
(label) [PCL]← [[SP]], [PCH]← [[SP] + 1], [SP] ←([SP] +
none reg. indirect 1/3 6/12 Return from
subroutine if even
parity, )the parity
status P=1
9. RPO addr
(label) [PCL]← [[SP]], [PCH]← [[SP] + 1], [SP] ←([SP] + )
none reg. indirect 1/3 6/12 Return from
subroutine if odd
parity, the parity
status P=0
1. RST n [[SP] –1]← [PCH], [[SP] – ]← [PCL], [SP] ← ([SP] – 2), [PC] ← 8 times n
none Reg. Indirect 3 12 Restart It is a one-word
CALL instruction
2. PCHL [PC] ← [H-L], [PCH] ← [H], [PCL] ← [L]
none Register 1 6 Jump to address
specified by H-L pair
The restart instruction as follows: RST 0, RST 1, RST 2, RST 3, RTS 4, RTS5, RST6 and RST 7
PCHL: The content of H-L pair are transferred to program counter
I/O and Machine Control Group:
• This group includes the instructions for input/ output ports
• Stacks and
• Machine control
• Examples are: IN, OU , PUSH, POP, HL , etc…
• This group contains about12 instructions, 2 for input/output, 4 for stacks and rest for machine
control
S.
No
Instructions Meaning Flag Addressing
Modes
M/C
Cycle
T-
states
Description
1. IN port-
address
[A]←[Port] none Direct 3 10 Input to accumulator
from I/O port
2. OUT port-
address
[Port]← [A] none Direct 3 10 Output from
accumulator to I/O
port
3. PUSH rp [[SP] – 1] ← [r
h]
[[SP] – ] ← [rl]
[SP] ← ([SP] –2)
none Register/
reg. Indirect
3 12 Push the content of
register pair to stack
4 PUSH PSW [[SP] – 1] ← [A]
[[SP] – ]← PSW
[SP] ← ([SP] –2)
none Register/
reg. Indirect
3 12 PUSH program status
word to the stack
5. POP rp [r
l] ← [[SP]]
[rh] ← [[SP] + 1]
[SP] ← ([SP] +2)
none Register/ reg. Indirect
3 10 Copy two bytes from
the top of the stack
into the specified
register
6. POP PSW PSW ← [[SP]] [A] ← [[SP] + 1
none Register/ reg. Indirect
3 10 Copy two bytes from
the top of the stack
[SP] ← ([SP] + ) into PSW and
Accumulator
7. HLT Program execution
is stopped none Implied 1 5 Halt
8. XTHL [L] ← [[SP]] [H] ← [[SP] + 1]
none Reg. Indirect 5 16 Exchange stack top
with H-L
9. SPHL [H-L] ← [SP] none Register 1 6 Move the contents of
H-L pair to stack
pointer
10. EI Interrupts are
enabled none Implied 1 4 Enable interrupts
11. DI Interrupts are
disabled none Implied 1 4 Disable interrupts
12. SIM none Implicit 1 4 Set Interrupt Masks
13. RIM none Implicit 1 4 Read Interrupt Mask
14. NOP none Implied 1 4 No operation
SIM & RIM instructions:
• When SIM instruction executed:
• Bit No. 0 – 5 of the accumulator are used in programming the restart interrupt masks
• Bits 6-7 of the accumulator are used in making serial output on SOD line
• When RIM instruction executed:
• The accumulator is loaded with pending interrupts,
• The restart interrupt masks and the contents of SID
Intel 8085 Instructions Classification Summary
S. No Group Instructions Examples Total
Instructions
1. Data Transfer MOV, MVI, LXI, LDA, STA, LHLD, SHLD,
LDAX, STAX, XCHG 10
2. Arithmetic ADD, ADC, ADI, ACI, DAD, SUB, SBB, SUI, SBI,
INR, DCR, INX, DCX, DAA 14
3. Logical ANA, ANI, ORA, ORI, XRA, XRI, CMA, CMC,
STC, CMP, CPI, RLC, RRC, RAL, RAR 15
4. Branch Control JMP, JZ, JNZ, JC, JNC, JP, JM, JPE, JPO, CALL,
CZ, CNZ, CC, CNC, CP, CM, CPE, CPO, RET, RZ,
RNZ, RC, RNC, RP, RM, RPE, RPO, RST, PCHL
29
5. I/O & Machine Control IN, OUT, PUSH, POP, HLT, XTHL, SPHL, EI, DI,
SIM, RIM, NOP 12
Machine Language:
• A computer uses binary digits for its operation and understands information composed of only
0s and 1s
• Hence, the instructions are coded and stored in the memory in the form of zeros and ones
• A program written in the form of 0s and 1s is called a machine language program
• In the machine language there is a specific binary code for each instruction
• For example, in Intel 8085 to add the contents of register A and register B, the binary code is
10000000
• To move the content of register B to register A the binary code is 01111000
Demerits of Machine Language Programs:
• A program written in machine codes ultimately becomes a set of binary numbers
• Demerits:
• It is very difficult for the programmer to write a program in machine codes, it is error prone
• It is very difficult to understand or debug a program
• Since each bit has to be entered individually the entry of the a program is very slow
• Programs are long
• Program writing is difficult and tiresome
• Chances of careless errors in writing program
Adding of two Numbers Program:
Machine Code Comments
0010 0001 Get the address of Ist number (21)
0000 0001 LSBs of 2501 (01)
0010 0101 MSBs of 2501 (25)
0111 1110 Move Ist number in accumulator (7E)
0010 0011 Increment the content of H-L pair (23)
1000 0110 Add IInd number to the Ist number (86)
0011 0010 Store sum at 2503 (32)
0000 0011 LSBs of 2503 (03)
0010 0101 MSBs of 2503 (25)
0111 0110 Stop Halt (76)
Input and Output for add Program:
Memory Address Data
Input:
0010 0101 0000 0001 0001 0101
0010 0101 0000 0010 0010 0000
Output:
0010 0101 0000 0011 0011 0101
Hexadecimal System:
• To facilitate programmer machine code can be written in hexadecimal system
• The program can easily be written in hexadecimal system compared to binary system
• The mistake can easily be detected
• The program written in hexadecimal system is converted into binary system
• All microprocessor kits have provision for such conversion
• The language in which a program writes a programs is called source language
• The language in which a computer works is called object or machine language
Adding two Numbers Program in Hex:
Hex Code Comments
21 Get the address of Ist number (21)
01 LSBs of 2501 (01)
25 MSBs of 2501 (25)
7E Move Ist number in accumulator (7E)
23 Increment the content of H-L pair (23)
86 Add 2
nd
number to the Ist number (86)
32 Store sum at 2503 (32)
03 LSBs of 2503 (03)
25 MSBs of 2503 (25)
76 Stop Halt (76)
Input: 2501 15
2502 20
2503 35 (Output)
Assembly Language:
• A programmer can easily write a program in alphanumeric symbols instead of 0s and 1s
• Meaningful and easily rememberable symbols are chosen for the purpose
• Examples are: ADD for addition, SUB for subtraction, CMP for comparison etc…, such
symbols called mnemonics
• A program written in mnemonics is known as assembly language program
• The writing of a program in assembly language is much easier and faster as compared to
machine language
• Both machine language and assembly language are microprocessor specific
Low Level Language:
• A microprocessor specific language is known as a low level language
• A program which translates an assembly language program into a machine language is called
an assembler
• A self-assembler or resident assembler is an assembler which runs on the microcomputer for
which
• It produces object code (or machine code)
• Mnemonics, operands, data of the program and starting address of for the program are fed to
computer
• The assembler converts the program into a machine language program before the execution of
the program
Adding two Numbers Program in Assembly:
Mnemonics Operands
LXI H, 2501H
MOV A, M
INX H
ADD M
STA 2503H
HLT
Input:
2501 49H
2502 56H
9FH (Output)
Adding two Numbers Program in kit
Memory Address Hex Code Mnemonics Operands
2000 21 LXI H, 2501H
2001 01
2002 25
2003 7E MOV A, M
2004 23 INX H
2005 86 ADD M
2006 32 STA 2503H
2007 03
2008 25
2009 76 HLT
DATA:
2501 49H
2502 56H
Result:
2501 9FH (Output)
Overview of Assembly Language:
Benefits:
• The programmer writes a program in mnemonics is easier to understand and faster to write
• An assembly language program is faster to produce result
Demerits:
• Programming is difficult and time consuming
• The assembly language is computer oriented
• Assembly language program is not portable
• Assembly language program is longer as compared to high level language
High Level Language:
• Instructions written in high-level languages are called statements rather than mnemonics
• In a HLL, statements more clearly resemble English and mathematics than mnemonics
• Examples of HLLs are OR RAN, COBOL, BASIC, PASCAL, C, C++, JAVA, etc….
Advantages of High Level Language:
• Instructions are very clear
• Writing of program is easier and faster
• HLLs are portable
• Easier documentation
• Standard syntax
• Independent of the structure of a computer
Disadvantages of High Level Language:
• Has to learn special rules for writing program
• Low speed
• Low efficiency of memory utilization: occupies the large part of the memory
• Extensive hardware and software supports required
• A compiler has to be provided to convert HLL program to Machine Language
STACK:
• During the execution of a program, it becomes necessary to save the contents of certain
registers
• Contents are named to certain memory locations by PUSH operation, registers used for other
operation
• Contents which were saved in memory are transferred back to registers by POP operation
• Memory locations for this purpose is set by the programmer in the beginning
• The set of memory locations kept for this purpose is called stack
• The last memory location of the occupied portion of the stack is called stack-top
• A special 16-bit register known as stack pointer holds the address of stack-top
• The stack pointer is initialized in the beginning of the program by LXI SP or SPHL
instruction
• Any area of RAM can be used as stack, data are stored in LIFO principle (last-in-first-out)
• Stack access is faster than memory access, the SP register holds the stack-top location
Stack before PUSH operation:
Stack after PUSH operation:
Stack before POP operation:
Stack after POP operation:
SUBROUTINES:
• While writing a program certain operations may occur several times and
• they are not available as individual instructions
• The program for such operation are repeated again and again in the main program
• Example of such operation is multiplication, sine, cosine, logarithm, etc. for Intel 8085
• The concept of subroutine is used to avoid the repetition of smaller programs
• The small program for a particular task is called subroutine
• Subroutines are written separately and stored in the memory
• They are called at various points of the main program by CALL instruction where they are
required
• The last instruction of the subroutine is RET
• After the completion of a subroutine, the main program begins from the instruction
• immediately following the CALL instruction
• There may be more than one subroutine in a program
• The technique of subroutine saves memory location
CALL-RETURN Structure of Subroutine:
MONITOR:
• A monitor is a program which resides in a ROM of PROM, carries out the following
functions:
• Initialization of the system
• Loading of programs into RAM
• Control of input & output devices
• Displaying of the contents of the internal CPU registers or memory location
• Modifying the contents of CPU registers or memory location
• Execution of the program which is in RAM or ROM
Monitor Program:
• In a microprocessor kit a monitor program controls its entire operation
• It contains subroutines for debugging programs like single step operation and
• program for inserting break point
• It also contains command like INSERT, DELETE, DELAY, RELOCATE etc.
• It controls CRT terminals, printer etc
• It helps user in entering and executing machine code program
• BIOS: Load the OS into RAM, and to control basic input/output operations
Intel8085: Basic Programs:
Ex1: Place 05 in register B
Mnemonics Operands Memory Address Machine Code Comments MVI B, 05 2000 H 06, 05 Get 05 in register B
HLT 2002 H 76 Stop
Ex2: Get 05 in register A; then move it to register B
Mnemonics Operands Memory Address Machine Code Comments MVI A, 05 2000 H 3E, 05 Get 05 in register A
MOV B, A 2002 H 47 Content of register A is
moved to register B
HLT 2003 H 76 Stop
Ex3: Load the content of memory location 3550H directly to accumulator, then transfer to
register B. The content of memory location 3550H is 05
Mnemonics Operands Memory Address Machine Code
LDA 3550H 2000 H 3A, 50, 35
MOV B, A 2003 H 47
HLT 2004 H 76
Ex4: Move the content of memory location 3550H to register C. The content of the memory
location 3550H is 08
Mnemonics Operands Memory Address Machine Code LXI H, 3550H 2000 H 21, 50, 35
MOV C, M 2003 H 4E
HLT 2004 H 76
Ex5: Place the content of the memory location FC50H in register B and that of FC51H in
register C. The content of FC50H and FC51H are 11H and 12H respectively
Mnemonics Operands Memory Address Machine Code
LXI H, FC50H 2500H 21, 50, FC
MOV B, M 2503H 46
INX H 2504H 23
MOV C, M 2505H 4E
HLT 2506H 76
The register B and C will contain 11H and 12H
DATA:
FC50 – 11H
FC51 – 12H
Ex6: Place 05 in the accumulator. Increment it by one and store the result in the memory
location 3600H
Mnemonics Operands Memory Address Machine Code MVI A, 05 2500 H 3E, 05
INR A 2502 H 3C
STA 3600 H 2503 H 32, 00, 36
HLT 2506 H 76
INR A increases the content of accumulator from 05 to 06
RESULT:
3600 H – 06 H
Addition of Two 8-bit Numbers: Sum 8-bit
Add 49 H and 56 H. Method#1
The 1st number 49 H is in the memory location 2501 H.
The 2nd
number 56 H is in the memory location 2502 H.
The result to be stored in the memory location 2503 H.
Mnemonics Operands Memory Address Machine Code LDA 2501 H 2000 H 3A, 01, 25
MOV B, A 2003 H 47
LDA 2502 H 2004 H 3A, 02, 25
ADD B 2007 H 80
STA 2503 H 2008 H 32, 03, 25
HLT 200B H 76
DATA
2501 – 49 H
2502 – 56 H
RESULT
2503 – 9F H
By Method#2
Mnemonics Operands Memory Address Machine Code LXI H, 2501 H 2000 H 21, 01, 25
MOV A, M 2003 H 7E
INX H 2004 H 23
ADD M 2005 H 86
STA 2503 H 2006 H 32, 03, 25
HLT 2009 H 76
Addition of Two 8-bit Numbers: Sum 16-bit
Add 98 H and 9A H. Method#1
The 1st number 98 H is in the memory location 2501 H.
The 2nd
number 9A H is in the memory location 2502 H.
The result to be stored in the memory location 2503 H & 2504 H.
Mnemonics Operands Memory Address Machine Code
MVI C, 00H 2000 H 0E, 00
LDA 2501 H 2002 H 3A, 01, 25
MOV B, A 2005 H 47
LDA 2502 H 2006 H 3A, 02, 25
ADD B 2009 H 80
JNC AHEAD 200A H D2, 0E, 20
INR C 200D H 0C
STA 2503 H 200E H 32, 03, 25
MOV A, C 2011 H 79
STA 2504 H 2012 H 32, 04, 25
HLT 2015 H 76
Method#2
Mnemonics Operands Memory Address Machine Code
MVI C, 00H 2000 H 0E, 00
LXI H, 2501 H 2002 H 21, 01, 25
MOV A, M 2005 H 7E
INX H 2006 H 23
ADD M 2007 H 86
JNC AHEAD 2008 H D2, 0C, 20
INR C 200B H 0C
STA 2503 H 200C H 32, 03, 25
MOV A, C 200F H 79
STA 2504 H 2010 H 32, 04, 25
HLT 2013 H 76
DATA
2501 – 49 H
2502 – 56 H
RESULT
2503 – 9F H
AHEAD:
DATA
2501 – 98 H
2502 – 9A H
Result
2503 – 32 H
2504 – 01 H
AHEAD:
DATA
2501 – 98 H
2502 – 9A H
Result
2503 – 32 H
2504 – 01 H
Decimal Addition of Two 8-bit Numbers:
Add 84 D and 75 D.
The 1st number 84 D is in the memory location 2501 H.
The 2nd
number 75 D is in the memory location 2502 H.
The result to be stored in the memory location 2503 H & 2504 H.
Mnemonics Operands Memory Address Machine Code
MVI C, 00H 2000 H 0E, 00
LXI H, 2501 H 2002 H 21, 01, 25
MOV A, M 2005 H 7E
INX H 2006 H 23
ADD M 2007 H 86
DAA 2008 H 27
JNC AHEAD 2009 H D2, 0D, 20
INR C 200C H 0C
AHEAD: STA 2503 H 200D H 32, 03, 25
MOV A, C 2010 H 79
STA 2504 H 2011 H 32, 04, 25
HLT 2014 H 76
Subtraction of Two 8-bit Numbers:
Subtract 32 H from 49 H. 49 H – 32 H Method#1
The 1st number 49 H is in the memory location 2501 H.
The 2nd
number 32 H is in the memory location 2502 H.
The result to be stored in the memory location 2503 H & 2504 H.
Mnemonics Operands Memory Address Machine Code
MVI C, 00H 2000 H 0E, 00 LDA 2501 H 2002 H 3A, 01, 25 MOV B, A 2005 H 47 LDA 2502 H 2006 H 3A, 02, 25 SUB B 2009 H 90 JNC AHEAD 200A H D2, 0E, 20 INR C 200D H 0C AHEAD: STA 2503 H 200E H 32, 03, 25 MOV C, A 2011 H 79 STA 2504 H 2012 H 32, 04, 25 HLT 2015 H 76
DATA
2501 – 49 H
2502 – 32 H
Result
2503 – 17 H
2504 – 00 H
DATA
2501 – 84 D
2502 – 75 D
Result
2503 – 59 D
2504 – 01
Method#2
Mnemonics Operands Memory Address Machine Code
MVI C, 00H 2000 H 0E, 00 LXI H, 2501 H 2002 H 21, 01, 25 MOV A, M 2005 H 7E INX H 2006 H 23 SUB M 2007 H 96 JNC AHEAD 2008 H D2, 0C, 20 INR C 200B H 0C AHEAD: STA 2503 H 200C H 32, 03, 25 MOV C, A 200F H 79 STA 2504 H 2010 H 32, 04, 25 HLT 2013 H 76
DATA
2501 – 32 H
2502 – 49 H
Result
2503 – F9 H
2504 – 01 H
Decimal Subtraction of Two 8-bit Numbers:
Subtract 38 D from 96 D. 96 – 38
The 1st number 96 D is in the memory location 2501 H.
The 2nd
number 32 D is in the memory location 2502 H.
The result to be stored in the memory location 2503 H.
In ecimal subtraction, the number which is to be subtracte is converte into 10’s complement
Mnemonics Operands Memory Address Machine Code LXI H, 2502 H 2000 H 21, 02, 25
MVI A, 99 H 2003 H 3E, 99
SUB M 2005 H 96
INR A 2006 H 3C
DCX H 2007 H 2B
ADD M 2008 H 86
DAA 2009 H 27
STA 2503 H 200A H 32, 03, 25
HLT 200D H 76
DATA
2501 – 96 D
2502 – 38 D
Result
2503 – 58 D
Find One’s complement of an 8-bit number
96 H = 1001 0110
One’s complement = 0110 1001 = (69 H)
The number is placed in the memory location 2501 H
The result is stored in the memory location 2502 H
Mnemonics Operands Memory Address Machine Code
LDA 2501 H 2000 H 3A, 01, 25
CMA 2003 H 2F
STA 2502 H 2004 H 32, 02, 25
HLT 2007 H 76
DATA
2501 – 96 H
Result
2502 – 69 H
Find Two’s complement of an 8-bit number:
96 H = 1001 0110
One’s complement = 0110 1001 = (69 H)
A 01 in 1’s complement, after a ition = 6A H
The number is placed in the memory location 2501 H
The result is stored in the memory location 2502 H
Mnemonics Operands Memory Address Machine Code
LDA 2501 H 2000 H 3A, 01, 25
CMA 2003 H 2F
INR A 2004 3C
STA 2502 H 2005 H 32, 02, 25
HLT 2008 H 76
Find One’s complement of a 16-bit number:
5485 H = 0101 0100 1000 0101
One’s complement = 1010 1011 0111 1010= (AB7A H)
The number is placed in the memory location 2501 H & 2502 H
The result is stored in the memory location 2503 H & 2504 H
Mnemonics Operands Memory Address Machine Code
LXI H, 2501 H 2000 H 21, 01, 25
MOV A, M 2003 H 7E
CMA 2004 H 2F
STA 2503 H 2005 H 32, 03, 25
INX H 2008 H 23
MOV A, M 2009 H 7E
CMA 200A H 2F
STA 2504 H 200B H 32, 04, 25
HLT 200E H 76
DATA
2501 – 96 H
Result
2502 – 6A H
DATA
2501 – 85 H
2502 – 54 H
Result
2503 – 7A H
2504 – AB H
Find Two’s complement of a 16-bit number:
A 01 in 1’s complement, after a ition = AB7B H
Mnemonics Operands Memory Address Machine Code LXI H, 2501 H 2000 H 21, 01, 25
MVI B, 00 H 2003 H 06, 00
MOV A, M 2005 H 7E
CMA 2006 H 2F
ADI 01 H 2007 H C6, 01
STA 2503 H 2009 H 32, 03, 25
JNC GO 200C H D2, 10, 20
INR B 200F H 04
INX H 2010 H 23
MOV A, M 2011 H 7E
CMA 2012 H 2F
ADD B 2013 H 80
STA 2504 H 2014 H 32, 04, 25
HLT 2017 H 76
Mask-off Least Significant 4-bits of an 8-bit number
Number = A6 H
= 1010 0110
Mask-off Least Significant 4-bits
Result = 1010 0000 = A0 H
The number is placed in the memory location 2501 H
The result is stored in the memory location 2502 H
Mnemonics Operands Memory Address Machine Code LDA 2501 H 2000 H 3A, 01, 25
ANI F0 H 2003 H E6, F0
STA 2502 H 2004 H 32, 02, 25
HLT 2007 H 76
Mask-off Most Significant 4-bits of an 8-bit number:
Number = A6 H
= 1010 0110
Mask-off Most Significant 4-bits
Result = 0000 0110 = 06 H
The number is placed in the memory location 2501 H
The result is stored in the memory location 2502 H
Mnemonics Operands Memory Address Machine Code LDA 2501 H 2000 H 3A, 01, 25
ANI 0F H 2003 H E6, 0F
STA 2502 H 2004 H 32, 02, 25
HLT 2007 H 76
GO:
DATA
2501 – 85 H
2502 – 54 H
Result
2503 – 7B H
2504 – AB H
DATA
2501 – A6 H
Result
2502 – A0 H
DATA
2501 – A6 H
Result
2502 – 06 H
Shift of an 8-bit number left by one bit:
Number = 65 H
= 0110 0101
Shift one bit left = 1100 1010 = CA H (Result)
The number is placed in the memory location 2501 H
The result is stored in the memory location 2502
0110 0101
0110 0101
1100 1010
Mnemonics Operands Memory Address Machine Code LDA 2501 H 2000 H 3A, 01, 25
ADD A 2003 H 87
STA 2502 H 2004 H 32, 02, 25
HLT 2007 H 76
Shift of an 8-bit number left by two bits:
Number = 65 H
= 0110 0101
Shift one bit left = 1100 1010 (1-bit left shift) = CA H
Shift again by one bit = 1001 0100 = 94 H
The number is placed in the memory location 2501 H
The result is stored in the memory location 2502 H
0110 0101
0110 0101
1100 1010
1100 1010
1001 0100
Mnemonics Operands Memory Address Machine Code
LDA 2501 H 2000 H 3A, 01, 25
ADD A 2003 H 87
ADD A 2004 H 87
STA 2502 H 2005 H 32, 02, 25
HLT 2008 H 76
DATA
2501 – 65 H
Result
2502 – 94 H
DATA
2501 – 65 H
Result
2502 – CA H
Assignment-II
1. Discuss various types of addressing modes of Intel 8085 with suitable examples. Give atleast
five examples for each
2. Classify 8085 instructions in various groups. Give atleast five examples of instructions for
each group
3. Write the advantages and disadvantages of machine language over assembly language
4. Write the roles of stacks, subroutines and monitor program in an assembly language program
5. Write a full description of the following instructions:
(i) ADC M, (ii) SUI data, (iii) XRA r, (iv) PUSH PSW, (v) LDAX D, (vi) POP B,
(vii) CPO addr(label), (viii) JNZ addr(label), (ix) RET (x) RAR
Program Assignment-II
1. Write an assembly language program for Intel 8085 to add two 16-bit numbers available at
memory locations 3401H, 3402H and 3403H, 3404H and store the result at memory location
3405H onward.
2. Write an assembly language program for Intel 8085 to subtract a 16-bit number stored at
memory locations 3501H & 3502H from a 16-bit number stored at memory location 3503H &
3504H and store the result at 3505H onward
3. Write an assembly language program to fin the ’s complement of an 8-bit number stored at
memory location 3600H and stores the complemented result at memory location 360AH.
4. Write an assembly language program for 8085 µp to subtract an 8-bit decimal number stored
at memory location 3500H from an 8-bit decimal number stored at memory location 3501H.
The program shall store the result and carry at memory locations 3502H onward
5. Write an assembly language program to fin the ’s complement of a 16-bit number stored at
memory locations 3601H & 3602H and stores the result at memory location 3603H & 3604H
The assignment should be completed by 20.10.2020