Gtu Micro Processor Practical
Gtu Micro Processor Practical
AND TECHNOLOGY
Department of Computer Engineering
PRACTICAL:-1
1. A. Store 8-bit data in memory
B. Store 16-bit data in memory
OUTPUT:-
LXI H,C010
MVI M
HLT
OUTPUT:-
MVI A,17H
LXI B,C010H
STAX B
HLT
OUTPUT:-
LXI B,4546
LXI H,C010
MOV M,B
INX H
MOV M,C
HLT
OUTPUT:-
LXI B,5453
MOV A,B
STA C010
MOV A,C
STA C011
HLT
OUTPUT:-
OUTPUT:-
3. Write a program to add 2 decimal numbers. Numbers are -85 and 25.
MVI A,85H
MVI B,25H
CMA
INR A
ADD B
HLT
OUTPUT:-
OUTPUT:-
5. Exchange 16-bit data (case I: Assume data in memory Case II: Data in
registers)
CASE1:-
LHLD C010
XCHG
LHLD C020
SHLD C010
XCHG
SHLD C020
HLT
OUTPUT:-
Before:-
After:-
CASE 2:-
LXI H,C030H
LXI D,C020H
XCHG
HLT
OUTPUT:-
OUTPUT:-
PRACTICAL:-2
1. Find 1's complement and 2's complement of a given number.
1’s complement:
o Input:
MVI A,FFH
MOV B,A
CMA
HLT
o Output:
2’s complement:
o Input:
MVI A,FFH
MOV B,A
CMA
INR A
HLT
o Output:
2. Add, Subtract 2 16 bit numbers stored at C000 and C002. Store result
from C005 onwards.
Addition of two 16 bit numbers stored at C020 and C030 memory location:
o Input:
LHLD C020H
XCHG
LHLD C030H
DAD D
SHLD C040H
HLT
o Output:
Subtraction of two 16 bit numbers stored at C020 and C030 memory location:
o Input:
LHLD C020H
XCHG
LHLD C030H
MOV A,E
SUB L
MOV L,A
MOV A,D
SBB H
MOV H,A
SHLD C040H
HLT
o Output:
MVI C,11H
MOV A,C
RRC
RRC
RRC
RRC
HLT
o Output:
MVI C,11H
MOV A,C
RAR
RAR
RAR
RAR
HLT
o Output:
o Input:
MVI B,11H
MVI C,FFH
MOV A,B
RAR
MOV B,A
MOV A,C
RAR
MOV C,A
HLT
o Output:
o Input:
MVI B,11H
MVI C,FFH
MOV A,C
RAL
MOV C,A
MOV A,B
RAL
MOV B,A
HLT
o Output:
PRACTICAL 3
1: Write 8085 data to pack the unpacked BCD number present in memory
and store the result in memory. Assume C001 and C002 have two
unpacked BCD number. Store result at C003.
Code:
LXI H,C020H
MVI M,02H
MOV A,M
INX H
MVI M,09H
RAL
RAL
RAL
RAL
ADD M INX H
MOV M,A
HLT
Output:
2: Write 8085 data to unpack the packed BCD number present in memory
and store the result in memory. Assume C001 has unpacked BCD number.
Store result at C002 and C003.
Code:
LXI H,C020H
MVI M,13H
MOV A,M
MOV B,M
RAR
RAR
RAR
RAR
ANI 0FH
INX H
MOV M,A
MOV A,B
ADI F0H
INX H
MOV M,A
HLT
Output:
PRACTICAL –4
PROBLEM STATEMENT –
1) CHECK WHETHER GIVEN NO IS EVEN OR ODD IF NUMBER
IS ODD, 01 SHOULD BE STORED IN MEMEORY LOCATION
OTHERWISE 02 SHOULD BE STORED.
MVI
A,50H
STA
CO50H
RRC
MVI
A,02H
JNC
C00DH
MVI
A,01H
STA
C061H
HLT
LXI
H,C070
H MOV
A,M ANI
01H
JZ
EVEN:
MOV
A,M
STA
C073H
JMP
ODD
EVEN:
MOV A,M
STA C074H
ODD: INX
H MOV
A,M
ANI
01H
JZ
EVEN
1
MOV
A,M
STA
C075H
JMP
ODD1
EVEN1:
MOV A,M
STA C076H
ODD1:HLT
OUTPUT –
LXI
H,C070H
LXI
D,C080H
MVI C,10H
BACK:MO
V A,M
STAX D
INX H
INX D
DCR
C JNZ
BACK
HLT
OUTPUT –
OUTPUT –
PRACTICAL - 5
PROBLEM STATEMENT –
1) WRITE AN 8085 ASSEMBLY LEVEL PROGRAM TO
CALCULATE SUM OF ‘N’ NUMBERS WHERE ‘N’ IS STORED
AT A MEMORYLOCATION.
OUTPUT -
OUTPUT -
OUTPUT -
LXI
H,C020H
MVI
C,0AH
MVI
B,00H
SKIP: INX H
DCR C
JNZ
BACK
MOV
A,B
STA C040H
HLT
OUTPUT –
PRACTICAL - 6
PROBLEM STATEMENT –
1) WITE AN 8085 ASSEMBLY LEVEL PROGRAM THAT INSERT A DATA
BYTE IN A GIVEN BLOCK OF DATA. THE BLOCK STARTS FROM
LOCATION C300H ONWORDS. IT CONSISTS OF 10 DATA BYTE TO
BE INSERTED IS STORED AT C200H AND THE POSITION WHERE IT
IS TO BE INSERTED IS STORED AT C201.
MVI H,0A
LXI B,C030H
LXI D,C040H
BACK:
LDAX B
STAX D
INX B
INX D
DCR H
JNZ BACK
HLT
OUTPUT-
OUTPUT -
PRACTICAL - 7
PROBLEM STATEMENT –
1) WRITE AN 8085 ASSEMBLY LEVEL PROGRAM TO DIVIDE A 16
BITNUMBER BY AN 8-BIT NUMBER. STORE THE REMAINDER
AND QUOTIENT IN MEMORY.
PROGRAM –
MVI
E,00
MVI
B,04H
MVI
A,0FH
BACK :
CMP B
JC
SKIP
SUB B
INR E
JMP
BACK
SKIP :
STA
C100H
MOV A,E
STA
C101H
HLT
OUTPUT
MVI
C,05H
MVI
B,00H LXI
H,C030H
BACK:
MOV
A,M
ANI
01H
JNZ
SKIP
MOV
A,B
ADD M
MOV
B,A
SKIP :
INX H
DCR C
OUTPUT
BEFORE
MVI C,05H
MVI B,00H
LXI
H,C030H
BACK:
MOV
A,M ANI
01H JZ
SKIP
MOV
A,B
SKIP:
INX H
DCR C
JNZ BACK
STA
C060H
HLT
AFTER -
PRACTICAL – 8
PROBLEM STATEMENT –
DCR C
JNZ
CHECK
MOV A,D
RAR
JC
START
HLT
Input:
Output:
LXI
H,C110H
MOV
B,M LXI
H,C100H
MOV
C,M
BACK:
INX H
MOV
A,M
CMP B
JNZ
NEXT
MOV
A,L STA
C120H
HLT
NEXT: MVI
A,FFH STA
C120H
DCR C
JNZ
BACK
HLT
SCET/CO/2020_21/ EVEN/SHIFT_I/SEM_VI Page | 52
Subject Code: 3160712 Subject Name: MI Date: 31/03/21
Enrollment No:150420107067 Name: Naseebullah Andar
Input:
Output
3. Write an 8085 assembly level program to count number of positive, negative and
zeros numbers in a block of 16 data bytes. Store the result in the memory.
Program:
LXI
H,C100H
MVI
C,00H
MVI
B,00H
MVI
E,00H
MVI
D,00H
BACK:
MOV A,M
CPI 00H
JZ
ZERO
ANI
80H
JNZ
NEG
INR D
JMP
NEXT
ZERO:
INR E
JMP
SCET/CO/2020_21/ EVEN/SHIFT_I/SEM_VI Page | 54
Subject Code: 3160712 Subject Name: MI Date: 31/03/21
Enrollment No:150420107067 Name: Naseebullah Andar
NEXT
NEG:
INR B
NEXT:
INX H
INR C
MOV
A,C
CPI
0AH
JNZ
BACK
LXI
H,C110H
MOV
M,D INX
H
MOV M,B
INX H
MOV
M,E
HLT
Output:
4. Write an 8085 assembly level program to add each element of an array of size 10
to another array.
Program:
LXI
H,C100H
LXI
B,C110H
LXI
D,C120H
BACK:
LDAX B
ADD M
STAX
D INX
H INX
B INX
D
MOV
A,L
CPI
0AH
JNZ
BACK
HLT
Output:
PRACTICAL - 9
PROBLEM STATEMENT –
1) WRITE AN 8085 ASSEMBLY LEVEL PROGRAM TO FIND THE
FACTORIAL OF A GIVEN NUMBER AND STORE THE RESULT IN
THE MEMORY.
LXI H,C100H
MOV B,M
MOV A,B
CPI 01H
JZ DONE
MOV C,B
FACTORIAL:
CALL MULTIPLY
DCR B
MOV A,B
CPI 01H
JNZ FACTORIAL
MOV A,C
DONE:
STA C110H
HLT
MULTIPLY:
MOV D,B
MOV A,C
DCR D
DCR D
JZ BACK
MUL:
ADC C
DCR D
OUTPUT –
LXI H,C100H
MVI C,0AH
MVI A,41H
STORE:
MOV M,A
INX H
INR A
DCR C
JNZ STORE
MVI D,00H
LXI H,C100H
MVI C,0AH
COUNT:
MOV A,M
CALL VOWELS
INX H
DCR C
JNZ COUNT
MOV A,D
STA C110H
HLT
VOWELS:
CPI 41H
CPI 45H
JZ FOUND
CPI 49H
JZ FOUND
CPI 4FH
JZ FOUND
CPI 55H
JZ FOUND
CPI 61H
JZ FOUND
CPI 65H
JZ FOUND
CPI 69H
JZ FOUND
CPI 6FH
JZ FOUND
CPI 75H
JNZ NOT
FOUND:
INR D
NOT: RET
OUTPUT –
MVI E,0AH
MVI B,00H
MVI C,01H
LXI H,C100H
MOV M,B
DCR E
INX H
MOV M,C
DCR E
BACK:
MOV A,C
CALL FIBO
INX H
MOV M,A
DCR E
JNZ BACK
HLT
FIBO:
ADD B
MOV B,C
MOV C,A
RET
OUTPUT -
OUTPUT -
LXI H,C100H
MOV E,M
MVI D,00H
INX H
MOV A,M
MVI C,08H
LXI H,0000H
CALL MUL
SHLD C110H
HLT
MUL: RRC
JNC SKIP
DAD D
SKIP: XCHG
DAD H
XCHG
DCR C
JNZ MUL
RET
OUTPUT -
PRACTICAL - 10
PROBLEM STATEMENT –
1) A STRING OF 10 DATA BYTES IS GIVEN TO YOU STARTING FROM
LOCATION D000H. CHECK WHETHER IT IS A PALINDROME OR
NOT. STORE YOUR RESULTS ON LOCATION D100H.
INPUT -
LXI H,D000H
LXI D,D009H
LOOP: LDAX D
MOV B,M
CMP B
JNZ EXIT
INX H
DCX D
MOV A,L
CMP E
JC LOOP
MVI A,01H
STA D100H
HLT
STA D100H
HLT
OUTPUT -
STAX D
INX D
INR B
MOV L,B
MOV A,B
CPI 0AH
JNZ LOOP
HLT
OUTPUT -
OUTPUT -
MVI C,00H
MVI D,14H
CPI 19H
JC BACK
CPI 41H
JNC BACK
INR C
BACK: INX H
DCR D
JNZ LOOP
MOV A,C
STA 4200H
HLT
OUTPUT -