Tuesday, 28 November 2017 0 comments

8085 program for 2's complement of a number

8085 program for 2's complement of a number


Finding Two's complement of a number, 2's complement program in 8085
2's complement of 8 bit number in 8085

Statement: Find the 2's complement of the number stored at memory location 4200H and store the complemented number at memory location 4300H.

Sample problem:

       (4200H) = 55H
               Result = (4300H) = AAH + 1 = ABH

Source program:

LDA 4200H            : Get the number
CMA                      : Complement the number
ADI, 01H               : Add one in the number
STA 4300H            : Store the result
HLT                       : Terminate program execution
 
0 comments

8085 program to find one's complement of a number

8085 program to find one's complement


Finding one's complement of a number

Statement: Find the l's complement of the number stored at memory location 4400H and store the complemented number at memory location 4300H.

Sample problem:                                                                       

       (4400H) = 55H
               Result = (4300B) = AAB                                       
Source program:                                                       

LDA 4400B  : Get the number
CMA            : Complement number
STA 4300H  : Store the result
HLT              : Terminate program execution
0 comments

8085 Program to Add contents of two memory locations in 8085 Processor

Add contents of two memory locations
Statement: Add the contents of memory locations 40001H and 4001H and place the result in the memory locations 4002Hand 4003H.
Sample problem:       

       (4000H) = 7FH
       (400lH)  = 89H
Result    = 7FH + 89H = lO8H
       (4002H) = 08H
       (4003H) = 0lH

Source program:

       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 the lower byte of result at 4002H
       MVI A, 00       : Initialize higher byte result with 00H
       ADC A           : Add carry in the high byte result
       INX H             : HL Points 4003H
       MOV M, A       : Store the higher byte of result at 4003H
       HLT               : Terminate program execution
0 comments

8085 Program to Exchange contents of memory locations 8085 Microprocessor

Program to Exchange contents of memory locations 8085 Microprocessor

Statement: 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 A register
 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.

In Program 1, direct addressing instructions are used, whereas in Program 2, indirect addressing instructions are used.
0 comments

8085 Program to store 8 bit data in memory of 8085 microprocessor

Program 1:

MVI A, 52H  : Store 32H in the accumulator
STA 4000H  : Copy accumulator contents at address 4000H
HLT              : Terminate program execution

Program 2:

LXI H           : Load HL with 4000H
MVI M                   : Store 32H in memory location pointed by HL register pair (4000H)
HLT              : Terminate program execution

The result of both programs will be the same. In program 1 direct addressing instruction is used, whereas in program 2 indirect addressing instruction is used.
0 comments

8085 Program to find square of a number in 8085

Program to find square of a number in 8085


LXI H, 6200H        : Initialize lookup table pointer
               LXI D, 6100H                : Initialize source memory pointer
               LXI B, 7000H        : Initialize destination memory pointer
       BACK: LDAX D                : Get the number
               MOV L, A                : A point to the square
               MOV A, M                : Get the square
               STAX B                : Store the result at destination memory location
               INX D                : Increment source memory pointer
               INX B                        : Increment destination memory pointer
               MOV A, C
               CPI 05H                : Check for last number
               JNZ BACK                : If not repeat
               HLT                        : Terminate program execution
0 comments

8085 Program to find factorial of a number in 8085

Program to find factorial of a number in 8085

Here is a program to find factorial of a number in 8085

MVI B, 03H
MOV C, B
DCR C
LOOP1:
MOV E, C
SUB A
LOOP2:
ADD B
DCR E
JNZ LOOP2
MOV B, A
DCR C
JNZ LOOP1
STA 8000H
HLT

Advanced Code


MEMORY
LABEL
MNEMONIC
HEX CODE
COMMENT
4200
LXI H,4100
21

Load the number to the HL pair
4201
00
4202
41
4203
MVI C,M
4E
Copy the number to register C
4204
MVI E,M
5E
Copy memory content to E
4205
DCR E
1D
Decrement E
4206
LOOP1
INX H
23
Increment memory
4207
DCR C
0D
Decrement C
4208
MOV M,C
71
Copy content of C to memory
4209
JNZ LOOP1
C2

Jump on non-zero to label LOOP1
420A
06
420B
42
420C
LXI H,4100
21
Load the number whose factorial is to be found in HL pair
420D
00
420E
41
420F
LOOP2
MOV A,M
7E
Copy memory content to accumulator
4210
INX H
23
Increment memory
4211
MOV B,M
46
Copy memory content to B
4212
MOV C,A
4F
Copy accumulator content to C
4213
MVI A,00
3E
Initialize A with 0
4214
00
4215
GO
ADD B
80
[A] ß [A] + [B]
4216
DCR C
0D
Decrement C
4217
JNZ GO
C2

Jump on non-zero to label GO
4218
15
4219
42
421A
MOV M,A
77
Copy accumulator content to memory
421B
DCR E
1D
Decrement E
421C
JNZ LOOP2
C2

Jump on non-zero to label LOOP2
421D
0F
421E
42
421F
STA 4500
32
Store accumulator content to memory
4220
00
4221
45
4222
HLT
76
Program ends
 
;