You are on page 1of 7

MICROPROCESSOR AND

MICROCONTROLLERS LAB
EXPERIMENTCODES
Aim: To transfer 10 bytes of data stored consecutively starting from memory location
2000h to another block of memory starting from memory location 2100h using:
● Direct addressing
● Indirect addressing (BC-DE pairs & BC-HI pairs)
Using indirect addressing (BC-HL pairs), transfer data stored in memory segment 2000h
to memory segment 2100h 1in reverse order.

APPARATUS : GNUSim8085

Algorithm –

1. Load register pair H-L with the address 2000H


2. Load register pair D-E with the address 2100H
3. Move the content at memory location into accumulator
4. Store the content of accumulator into memory pointed by D-E
5. Increment value of register pair H-L and D-E by 1
6. Decrements value of register C by 1
7. If zero flag not equal to 1, go to step 3
8. Stop

Code:

MVI C,0AH MOVE INTERMEDIATE DATA FROM 00H TO REGISTER C

LXI H,2000H LOAD 2000H INTO REGISTER PAIR LH

LXI B,2100H LOAD 2100H INTO REGISTER PAIR BC

MOV A,M MOVE REGISTER DATA AT M TO REGISTER A

STAX B STORE DATA AT REGISTER A TO REGISTER PAIR BC

INX H INCREMENT REGISTER PAIR HL

INX B INCREMENT REGISTER PAIR BC

DCR C DECREMENT REGISTER C

JNZ 4008 IF NOT 0 JUMP AT 4008H

HLT END PROGRAM


Input value: 11 at 2000H Load me at value : 20736

OUTPUT:
2.ADDITION OF 32­bit NUMBERS

CODE:
LDA 2050H Load accumulator from address 2050H
MOV B,A Move data from register A to B
LDA 2050H Load accumulator from address 2052H
ADD B Add A and B in A
STA 5000H Store data at register A at 5000H

LDA 2051H Load accumulator from address 2051H


MOV B,A Move data from register A to register B
LDA 2053H Load accumulator from address 2053H
ADC B Add B with carry
STA 5002H Store data at register A at 5002H

LDA 2055H Load accumulator from address 2055H


MOV B,A Move data from register A to B
LDA 2057H Load accumulator form address 2057H
ADC B Add B with carry
STA 5003H Store data at register at 5003H
HLT
3.AIM: To perform multiplication of two 8 bit numbers X and Y

CODE:

LDA 3000H LOAD THE VALUE TO ACCUMULATOR

MOV B,A MOVE THE CONTENT OF ACCUMULATOR TO B REGISTER

LDA 3001H LOAD THE VALUE TO ACCUMULATOR

MOV C,A MOVE THE CONTENT OF ACCUMULATOR TO C REGISTER

MVI A,00H INITIALIZE A, REGISTER TO 00

LOOP1 : ADD B

DCR C

LNZ LOOP1

STA 3002H STORE THE VALUE OF ACCUMULATOR

HLT HALT THE PROGRAM

OUTPUT:
4.AIM: To perform division of two 8 bit numbers X and Y. Verify the result using binary division.

CODE:

LXI H,2000H LOAD IMMEDIATE DATA INTO REGISTER PAIR HL

MOV B,M MOVE DATA AT M TO B

MVI C,00H MOVE IMMEDIATE DATA 00H TO C

INX H INCREMENT REGISTER H

MOV A,M MOVE DATA AT M TO A

CMP B COMPARE ACCUMULATOR WITH B

JC 5011H IF CARRY, JUMP TO 5001H

SUB B SUBTRACT B FROM REGISTER A, AND STORE THE VALUE IN A

JMP 5008H JUMP TO 5008H

STA 3000H STORE THE DATA OF ACCUMULATOR AT 3000H

MOV A,C MOVE DATA AT C TO A

STA 3001

OUTPUT:

You might also like