Programming in 8085
Let’s see some simple example to demonstrate the use of some important instructions of 8085.
The memory addresses given in the program are for a particular microprocessor kit. These addresses can be changed to suit the microprocessor kit available in your system.
Store 8-bit data in memory
Program
Store 8-bit data in memory using direct addressing
Store 8-bit data in memory using indirect addressing
Add two 8-bit numbers
Example
(2501 H) = 99H (2502 H) = 39H Result (2503 H) = 99H + 39H = D2H Since, 1 0 0 1 1 0 0 1 (99H) + 0 0 1 1 1 0 0 1 (39H) 1 1 0 1 0 0 1 0 (D2H)
Program
Subtract two 8-bit numbers
Example
(2501 H) = 49H (2502 H) = 32H Result (2503 H) = 49H - 32H = 17H
Program
Add two 16-bits numbers
Add the 16-bit number in memory locations 2501H and 2502H to the 16-bit number in memory locations 2503H and 2504H. The most significant eight bits of the two numbers to be added are in memory locations 2502H and 4004H. Store the result in memory locations 2505H and 2506H with the most significant byte in memory location 2506H.
Example
(2501H) = 15H (2502H) = 1CH (2503H) = B7H (2504H) = 5AH Result = 1C15 + 5AB7H = 76CCH (2505H) = CCH (2506H) = 76H
Program
Add two 16-bits number with ADD and ADC instruction
Add two 16-bits numbers with DAD instruction
Subtract two 16-bit numbers
Example
(2500H) = 19H (2501H) = 6AH (2504H) = 15H (2503H) = 5CH Result = 6A19H ? 5C15H = OE04H (2504H) = 04H (2505H) = OEH
Program
Add contents of two memory locations
Example
(2500H) = 7FH (2501H) = 89H Result = 7FH + 89H = lO8H (2502H) = 08H (2503H) = 01H
Program
Finding 1’s complement of a number
To obtain one’s complement of a number its 0 bits are replaced by 1 and 1 by 0.
Example 1
(2501H) = 96 H = 1001 0110 (9) (6) One's complement = 0110 1001 = 69 H Result = (2502H) = 69H
Example 2
(2501H) = E4H Result = (2502H) = 1BH
Program
The number is placed in the memory location 2501 H.
The result is stored in the memory location 2502 H.
Finding 2’s complement of a number
2’s complement of a number is obtained by adding 1 to the 1’s complement of the number.
Example
To find the two's complement of 96. 96 = 1001 0110 1's complement = 0110 1001 = 69 + 0000 0001 2's complement = 0110 1010 = 6A
Program
The number is placed in the memory location 2501 H.
The result is to be stored in the memory location 2502 H.
Count number of 1’s in a number
Example
2501 H = 04 2502 H = 34 H 2503 H = A9H 2504 H = 78H 2505 H = 56H Result = 2503 H = A9H
Program
Count number of 1’s of the content of the register D and store the count in the register B.
Find larger of two numbers
Example
2501H = 98 H 2502H = 87H Result = 98H (2503H)
Program
The first number 98H is placed in the memory location 2501 H.
The second number 87H is placed in the memory location 2502H.
The result is stored in the memory location 2503 H.
LXI H, 2501H : "Address of first number in H-L pair" MOV A, M : "1stt number in accumulator" INX H : "Address of 2nd number in H-L pair" CMP M : "compare 2nd number with 1st number" JNC AHEAD : "No, larger is in accumulator. Go to AHEAD" MOV A, M : "Yes, get 2nd number in the accumulator" STA 2503 H : "Store larger number in 2503H" HLT : "Stop"
Find smaller of two numbers
Example
2501H = 84 H 2502H = 99 H Result = 84 H(2503H)
Program
The first number 84H is placed in the memory location 2501 H.
The second number 99H is placed in the memory location 2502H.
The result is stored in the memory location 2503 H.
LXI H, 2501H : "Address of first number in H-L pair" MOV A, M : "1stt number in accumulator" INX H : "Address of 2nd number in H-L pair" CMP M : "compare 2nd number with 1st number" JC AHEAD : "Yes, smaller number is in accumulator. Go to AHEAD" MOV A, M : "No, get 2nd number in the accumulator" STA 2503 H : "Store smaller number in 2503H" HLT : "Stop"
Calculate the sum of series of even numbers
Example
2500 H = 4H 2501 H = 20H 2502 H = 15H 2503 H = 13H 2504 H = 22H Result = 2505 H = 20+22= 42H
Program
The numbers are placed in the memory locations 2501 to 2504H.
The sum is to be stored in the memory location 2450H.
As there are 4 numbers in the series, count = 04
The initial value of the sum is made 00. The even number of the series are taken one by one and added to the sum.
Calculate the sum of series of odd numbers
Example
2500 H = 4H 2501 H = 9AH 2502 H = 52H 2503 H = 89H 2504 H = 3FH Result = 2505 H = 89H + 3FH= C8H
Program
The numbers are placed in the memory locations 2501 to 2504H.
The sum is to be stored in the memory location 2450H.
As there are 4 numbers in the series, count = 04
The initial value of the sum is made 00. The odd number of the series are taken one by one and added to the sum.
Find the square of given number
Program
Find the square of 07 (decimal) using lookup table techniques.
The number 07 D is in the memory.
The result is to be stored in the memory location 2501H.
The table for square is stored from 2600 to 2609 H.
Separate even numbers from given numbers
Program
Let’s see the program to separate even numbers from the given list of 50 numbers and store them in other location starting from 2600H.
Starting location of 50 number list is 2500H.