0% found this document useful (0 votes)
701 views

Assembly Language Programming 8085 PDF

The document describes several assembly language programs to perform operations on 8-bit and 16-bit numbers stored in memory locations. These include storing data, exchanging data, adding, subtracting, finding ones' complement, right shifting, and finding the sum and largest value of a series of numbers.

Uploaded by

Roshan Shaw
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
701 views

Assembly Language Programming 8085 PDF

The document describes several assembly language programs to perform operations on 8-bit and 16-bit numbers stored in memory locations. These include storing data, exchanging data, adding, subtracting, finding ones' complement, right shifting, and finding the sum and largest value of a series of numbers.

Uploaded by

Roshan Shaw
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

Assembly Language

Programming in 8085
Store 8 bit data (52H) in memory
location 2000H
• Program 1
MVI A,52H ; Store 52H in Accumulator
STA 2000H ; Copy contents of A to 2000H
HLT ; Terminate program execution
• Program2
LXI H, 2000H ; Load HL with 2000H
MVI M, 52H ;Store 52H in memory location pointed by
HL register pair (2000H)
HLT ; Terminate program execution
Exchange the contents of memory locations
2000H and 4000H.
• Program 1
LDA 2000H ;Get the contents of memory location
2000H into accumulator
MOV B, A ;Save the contents into B register
LDA 4000H ;Get the contents of memory location
4000Hinto accumulator
STA 2000H ;Store the contents of accumulator at
address 2000H
MOV A, B ;Get the saved contents back into Accumulator
STA 4000H ;Store the contents of accumulator at address
4000H
• Program 2
LXI H 2000H ;Initialize HL register pair as a pointer to
memory location 2000H.
LXI D 4000H ;Initialize DE register pair as a pointer to
memory location 4000H.
MOV B, M ; Get the contents of memory location
2000H into B register.
LDAX D ;Get the contents of memory location
4000H into A register.
MOV M, A ;Store the contents of A register into
memory location 2000H.
MOV A, B ;Copy the contents of B register into
accumulator.
STAX D ;Store the contents of A register into
memory location 4000H.
HLT ;Terminate program execution.
Add two 8-bit numbers
• Add the contents of memory locations 4000H
and 4001H and place the result in memory
location 4002H.
(4000H) = 14H
(4001H) = 89H
Result = 14H + 89H = 9DH
LXI H 4000H ;HL points 4000H
MOV A, M ;Get first operand
INX H ;HL points 4001H
ADD M ;Add second operand
INX H ;HL points 4002H
MOV M, A ;Store result at 4002H
HLT ;Terminate program execution
Add two 16-bit numbers
• Add the 16-bit number in memory locations
4000H and 4001H to the 16-bit number in
memory locations 4002H and 4003H.
(4000H) = 15H
(4001H) = 1CH
(4002H) = B7H
(4003H) = 5AH
Result = 1C15 + 5AB7H = 76CCH
(4004H) = CCH
(4005H) = 76H
Program 1
LHLD 4000H ;Get first I6-bit number in HL
XCHG ;Save first I6-bit number in DE
LHLD 4002H ;Get second I6-bit number in HL
MOV A, E ;Get lower byte of the first number
ADD L ;Add lower byte of the second number
MOV L, A ;Store result in L register
MOV A, D ;Get higher byte of the first number
ADC H ;Add higher byte of the second number
with CARRY
MOV H, A ;Store result in H register
SHLD 4004H ;Store I6-bit result in memory locations 4004H
and 4005H
HLT ;Terminate program execution
Program 2
LHLD 4000H ; Get first I6-bit number
XCHG ; Save first I6-bit number in DE
LHLD 4002H ; Get second I6-bit number in HL
DAD D ; Add DE and HL
SHLD 4004H ; Store I6-bit result in memory locations
4004H and 4005H
HLT ; Terminate program execution
Subtract two 8-bit numbers
• Subtract the contents of memory location
4001H from the memory location 2000H and
place the result in memory location 4002H.
(4000H) = 51H
(4001H) = 19H
Result = 51H – 19H = 38H
LXI H, 4000H ;HL points 4000H
MOV A, M ;Get first operand
INX H ;HL points 4001H
SUB M ;Subtract second operand
INX H ;HL points 4002H
MOV M, A ;Store result at 4002H
HLT ;Terminate program execution
Subtract two 16-bit numbers
• Subtract the 16-bit number in memory locations 4002H
and 4003H from the 16-bit number in memory locations
4000H and 4001H.
(4000H) = 19H
(400IH) = 6AH
(4004H) = I5H
(4003H) = 5CH
Result = 6A19H – 5C15H = OE04H
(4004H) = 04H
(4005H) = OEH
Source program
LHLD 4000H ;Get first 16-bit number in HL
XCHG ;Save first 16-bit number in DE
LHLD 4002H ;Get second 16-bit number in HL
MOV A, E ;Get lower byte of the first number.
SUB L ;Subtract lower byte of the second
number
MOV L, A ;Store the result in L register
MOV A, D ;Get higher byte of the first number
SBB H ;Subtract higher byte of second
number with borrow
MOV H, A ;Store l6-bit result in memory
locations 4004H and 4005H
SHLD 4004H ;Store l6-bit result in memory
locations 4004H and 4005H
HLT ;Terminate program execution
Finding one’s complement of a
number
• Find the 1’s complement of the number stored
at memory location 4400H and store the
complemented number at memory location
4300H.
(4400H) = 55H
Result = (4300B) = AAB
Source program
LDA 4400B ;Get the number
CMA ;Complement number
STA 4300H ;Store the result
HLT ;Terminate program execution
Finding Two’s complement of a
number
• Find the 2′s complement of the number
stored at memory location 4200H and store
the complemented number at memory
location 4300H
(4200H) = 55H
Result = (4300H) = AAH + 1 = ABH
• Source program
LDA 4200H ;Get the number
CMA ;Complement the number
ADI, 01 H ;Add one in the number
STA 4300H ;Store the result
HLT ;Terminate program execution"
Right shift, 8 bit of data
• Write a program to shift an eight bit data four
bits right. Assume data is in register C.
(4200H) = 58
Result = (4300H) = 08 and (4301H) = 05
MOV A, C
RAR
RAR
RAR
RAR
MOV C, A
HLT
Right shift, 16 bit of data
• Write a program to shift a 16 bit data, 1 bit
right. Assume that data is in BC register pair.
MOV A, B
RAR
MOV B, A
MOV A, C
RAR
MOV C, A
HLT
To find the sum of a series of 8 bit
numbers
The length of the series is in memory location 2200H
and the series begins at memory location 2201H.
Assume sum is 8bit. Store the result in 2300H
2200H=04H
2201H=20H
2202H=15H
2203H=13H
2204H=22H
Result=20+15+13+22=6AH
2300H=6AH
Start

Sum=0
Pointer=2201 H
Count=2200 H

Sum=Sum + (Pointer)

Pointer=Pointer + 1
Count = Count -1

No Is
Count
=0

2300H = Sum

End
Source Program
LDA 2200H
MOV C,A ;Initialize counter
SUB A ;sum=0
LXI H,2201H ;Initialize pointer
BACK: ADD M ;sum=sum+data
INX H ; Increment pointer
DCR C ; decrement counter
JNZ BACK ;If counter ≠0 repeat
STA 2300H ;store sum
HLT ;Terminate program execution
Assume sum is 16bit
2200H=04H
2201H=9AH
2202H=52H
2203H=89H
2204H=3EH
Result=9A+52+89+3E=1B3H
2300H=B3H (lower byte of sum)
2301=01H(Higher byte of sum)
Start

Sumhigh=0
Sumlow=0
Pointer=2201 H
Count=2200 H
Sumlow=Sumlow + (Pointer)

No Is Carry= 1

Sumhigh=Sumhigh + 1

Pointer=Pointer + 1
Count = Count -1
No
Is Count =0

2300H = Sum

End
Source Program
LDA 2200H
MOV C,A ;Initialize counter
LXI H,2201H ;Initialize pointer
SUB A ;sumlow=0
MOV B,A ;sumhigh=0
BACK: ADD M ;sum=sum+data
JNC SKIP
INR B ;Add carry to MSB of sum

SKIP: INX H ; Increment pointer


DCR C ; decrement counter
JNZ BACK ;If counter ≠0 repeat
STA 2300H ;store the lower byte of sum
MOV A,B
STA 2300H ;store the higher byte of sum
HLT
• Find the largest among a set of numbers

You might also like