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

Sim8085 (1) (1)_merged

The document contains a series of assembly language programs for the 8085 microprocessor, covering various operations such as copying memory blocks, counting bits, finding maximum and minimum values, and performing arithmetic operations like addition, subtraction, multiplication, and division. Each program includes input and output specifications, demonstrating the functionality of the code. The document serves as a comprehensive guide for programming in 8085 assembly language.
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)
10 views

Sim8085 (1) (1)_merged

The document contains a series of assembly language programs for the 8085 microprocessor, covering various operations such as copying memory blocks, counting bits, finding maximum and minimum values, and performing arithmetic operations like addition, subtraction, multiplication, and division. Each program includes input and output specifications, demonstrating the functionality of the code. The document serves as a comprehensive guide for programming in 8085 assembly language.
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/ 22

8085 assembly language programming:

1. Write an assembly language program to copy the content of memory block to


other memory block.

LXI H,0030H
LXI D,0080H
MVI C,05H
XX: MOV A,M
STAX D
INX H
INX D
DCR C
JNZ XX
HLT
Input values are:
Memory Location Content
0030H 54H
0031H 12H
0032H 37H
0033H 45H
0034H 87H

Output values are:


Memory Location Content
0080H 54H
0081H 12H
0082H 37H
0083H 45H
0084H 87H
2. Write an assembly language program to copy the content of memory block to
other memory block in reverse order.

LXI H,0040H
LXI D,0074H
MVI C,05H
XX: MOV A,M
STAX D
INX H
DCX D
DCR C
JNZ XX
HLT
Input values are:
Memory Location Content
0030H 54H
0031H 12H
0032H 37H
0033H 45H
0034H 87H

Output values are:


Memory Location Content
0080H 87H
0081H 45H
0082H 37H
0083H 12H
0084H 54H
3. Write an assembly language program to number of 0’s in a 8 bit number

LXI H,0030H
MOV A,M
MVI C,00H
MVI B,08H
YY: RAR
JC XX
INR C
XX: DCR B
JNZ YY
MOV A,C
STA 0040H
HLT
Input value:
Memory Location Content
0030H F2H

Output value:
Memory Location Content
0040H 03H
4. Write an assembly language program to number of 1’s in a 8 bit number

LXI H,0030H
MOV A,M
MVI C,00H
MVI B,08H
YY: RAR
JNC XX
INR C
XX: DCR B
JNZ YY
MOV A,C
STA 0040H
HLT
Input value:
Memory Location Content
0030H A5H

Output value:
Memory Location Content
0040H 04H
5. Write an assembly language program to multiply two 8 bit numbers.

LXI H,0050H
MOV B,M
INX H
MOV C,M
MVI A,00H
MVI D,00H
XX: ADD B
JNC YY
INR D
YY: DCR C
JNZ XX
STA 0061H
MOV A,D
STA 0060H
HLT
Input values are:
Memory Location Content
0050H 02H
0051H 04H

Output values are:


Memory Location Content
0060H 00H
0061H 08H
6. Write an assembly language program to find the maximum value which is stored
in consecutive memory location

LXI H,0050H
MOV A,M
INX H
CMP M
JNC XX
MOV A,M
XX: STA 0060H
HLT

Input values are:


Memory Location Content
0050H 92H
0051H B4H

Output value:
Memory Location Content
0060H B4H
7. Write an assembly language program to find the minimum value which is stored
in consecutive memory location

LXI H,0050H
MOV A,M
INX H
CMP M
JC XX
MOV A,M
XX: STA 0060H
HLT

Input values are:


Memory Location Content
0050H 92H
0051H B4H

Output value:
Memory Location Content
0060H 92H
8. Write an assembly language program to find the minimum value which is stored
in n consecutive memory locations

LXI H,0030H
MOV C,M
INX H
MOV A,M
DCR C
XX: INX H
CMP M
JC YY
MOV A,M
YY: DCR C
JNZ XX
STA 0040H
HLT

Input values are:


Memory Location Content
0030H 06H
0031H B4H
0032H 56H
0033H 08H
0034H 45h
0035H 33h
0036H 07h

Output value:
Memory Location Content
0040H 07H
9. Write an assembly language program to find the maximum value which is stored
in n consecutive memory locations

LXI H,0030H
MOV C,M
INX H
MOV A,M
DCR C
XX: INX H
CMP M
JNC YY
MOV A,M
YY: DCR C
JNZ XX
STA 0040H
HLT

Input values are:


Memory Location Content
0030H 06H
0031H B4H
0032H 56H
0033H 08H
0034H 45H
0035H 33H
0036H 07H

Output value:
Memory Location Content
0040H B4H
10. Write an assembly language program to count the occurrences of a particular no
in the given range

LXI H,0040H
MVI C,07H
MVI B,00H
LDA 0060H
YY: CMP M
INX H
JNZ XX
INR B
XX: DCR C
JNZ YY
MOV A,B
STA 0070H
HLT

Input values are:


Memory Location Content
0040H 01H
0041H 02H
0042H 01H
0043H 03H
0044H 08H
0045H 01H
0046H A2H

0060H 03H

Output value:
Memory Location Content
0040H B4H
11. Write an assembly language program to find even numbers in a given array.

LXI H, 0040H
LXI D, 0060H
MVI C, 0AH
BACK: MOV A, M
ANI 01H
JNZ SKIP
MOV A, M
STAX D
INX D
SKIP: INX H
DCR C
JNZ BACK
HLT

Input values are:


Memory Location Content
0040H 01H
0041H 02H
0042H 01H
0043H 03H
0044H 0AH
0045H 05H
0046H 60H
0047H 56H
0048H 22H
0049H 03H

Output values are:


Memory Location Content
0060H 02H
0061H 0AH
0062H 60H
0063H 56H
0064H 22H
12. Write an assembly language program to find HCF of two numbers:

LXI H, 0040H
MOV A,M
INX H
MOV B,M
L1: CMP B
JZ OUT
JC L2
SUB B
JMP L1
L2: MOV C,B
MOV B,A
MOV A,C
JMP L1
OUT: STA 0050H
HLT

Input values are:


Memory Location Content
0040H 02H
0041H 04H

Output value:
Memory Location Content
0050H 02H
1A: Addition of two 8-bit numbers

LDA 3050H
MOV B,A
LDA 3051H
ADD B
STA 3052H
HLT

1B: Subtraction of two 8-bit numbers

LDA 3050H
MOV B,A
LDA 3051H
SUB B
STA 3052H
HLT

2A: Addition of two 16-bit numbers

LHLD 3050H
XCHG
LHLD 3052H
DAD D
SHLD 3054H
HLT

2B: Subtraction of two 16-bit numbers

LHLD 3050H
XCHG
LHLD 3052H
MOV A,E
SUB L
STA 3054H
MOV A, D
SUB H
STA 3055H
HLT

3A: Multiplication of two 8-bit numbers using Repetitive Addition

LHLD 3050H
XCHG
MOV C,D
MVI D,00H
LXI H,0000H
NEXT:DAD D
DCR C
JNZ NEXT
SHLD 3070H
HLT
3B: Multiplication of two 8-bit numbers using Shift and Add method

LXI H, 2000H
MOV E,M
MVI D, 00H
INX H
MOV A,M
LXI H,0000H
MVI B,08H
BACK: DAD H
RAL
JNC SKIP
DAD D
SKIP: DCR B
JNZ BACK
SHLD 3050H
HLT

4A: 8-bit division

MVI E,00H
LDA 3051H
ADI 00H
JZ EXIT
MOV B,A
LDA 3050H
BACK: CMP B
JC NEXT
SUB B
INR E
JMP BACK
NEXT: STA 3053H
MOV A,E
STA 3052H
EXIT: HLT

4B: 16-bit division

LXI B, 0000H
LHLD 3052H
XCHG
LHLD 3050H
MOV A,L
BACK: SUB E
MOV L,A
MOV A,H
SBB D
MOV H,A
JC NEXT
INX B
JMP BACK
NEXT: DAD D
SHLD 3056H
MOV L,C
MOV H,B
SHLD 3054H
HLT
5A: Block Data Shifting

LXI H, 3050H
MVI C,05H
LXI D,3150H
NEXT: MOV A,M
STAX D
INX H
INX D
DCR C
JNZ NEXT
HLT

5B: Data Swapping

LXI H,3050H
MVI C,05H
LXI D,3150H
NEXT: MOV B,M
LDAX D
MOV M,A
MOV A,B
STAX D
INX H
INX D
DCR C
JNZ NEXT
HLT

6A: LARGEST NUMBER


LXI H,3050H
MVI C,05H
MVI A,00H
BACK: CMP M
JNC NEXT
MOV A,M
NEXT: INX H
DCR C
JNZ BACK
MOV M,A
HLT

6B: SMALLEST NUMBER

LXI H, 3050H
MVI C,05H
MVI A,FFH
BACK: CMP M
JC NEXT
MOV A,M
NEXT: INX H
DCR C
JNZ BACK
MOV M,A
HLT
EXPT 7
7A: ASCENDING ORDER
MVI B, 04H ;outer loop count
BACK2: LXI H, 2000H ;pointer
MVI C, 04H ;inner loop count
BACK1: MOV A,M ;A=1st number
INX H ;M=2ND location
CMP M ;A-M
JC SKIP ;if 1st is smaller
JZ SKIP ;if equal
MOV D,M ;D=2nd number
MOV M,A ;1ST no is at 2nd location
DCX H ;M points to 1st location
MOV M,D ;2nd number is now at 1st location
INX H ;M points to 2nd number
SKIP: DCR C ;dec count
JNZ BACK1 ;inner loop
DCR B ;dec count
JNZ BACK2 ;outer loop
HLT ;end program

7A: DESCENDING ORDER


MVI B, 04H ;outer loop count
BACK2: LXI H, 2000H ;pointer
MVI C, 04H ;inner loop count
BACK1: MOV A,M ;A=1st number
INX H ;M=2ND location
CMP M ;A-M
JNC SKIP ;if 1st is smaller
MOV D,M ;D=2nd number
MOV M,A ;1ST no is at 2nd location
DCX H ;M points to 1st location
MOV M,D ;2nd number is now at 1st location
INX H ;M points to 2nd number
SKIP: DCR C ;dec count
JNZ BACK1 ;inner loop
DCR B ;dec count
JNZ BACK2 ;outer loop
HLT ;end program

EXPT 8:
8A: COUNTING ODD NUMBERS
LXI H, 3050H
MVI C, 0AH
MVI D, 00H
BACK: MOV A, M
ANI 01H
JZ SKIP
INR D
SKIP: INX H
DCR C
JNZ BACK
MOV A, D
STA 3070H
HLT
8B: SUM OF EVEN NUMBERS
LDA 3000H
MOV C, A
LXI H, 3001H
MVI B, 00H
BACK: MOV A, M
ANI 01H
JNZ SKIP
MOV A,B
ADD M
MOV B,A
SKIP: INX H
DCR C
JNZ BACK
STA 3020H
HLT

EXPT 9: ADDITION
MOV A, #15H
MOV Ro, #20H
ADD A, Ro
MOV DPTR, 2003H
MOVX @DPTR, A
HERE: SJMP HERE

EXPT 10: SUBTRACTION


MOV A, 2000H
MOV Rn, 2001H
SUBB A, Rn
MOV DPTR, 2002H
MOVX @DPTR, A
HERE: SJMP HERE
Addition of 8 bit numbers: LDA 3050H
MOV B,A
LDA 3051H
ADD B
STA 3053H
HLT
Subtraction of two unsigned 8 bit numbers LDA 3050H
MOV B,A
LDA 3051H
SUB B
STA 3053H
HLT
Subtraction of two signed 8 bit numbers. LDA 3050H
(To detect overflow) MOV B,A
LDA 3051H
SUB B
STA 3053H
HLT
JNC NOOF
JC OF
NOOF:
MVI A, 00H
STA 3054H
HLT
OF:
MVI A, 01H
STA 3054H
HLT;
Addition of two unsigned 16 bit numbers LHLD 3050H
MOV D, H
MOV E, L
;Or Just use XCHG
LHLD 3052H
MOV A, D
ADD H
STA 3054H
MOV A, E
ADC L
STA 3055H
HLT
Write a program to transfer the block of code LXI H, 3050H
from source to destination LXI D, 2000H
MVI C, 06

LOOP:
MOV A, M
STAX D
INX H
INX D
DCR C
JNZ LOOP
HLT
Write a program to Reverse the N no. o Array of LDA 3050H ; A = 3050
numbers MOV B, A ; B = 1st element 3050
LDA 3054H ; A = Last element 3054
STA 3050H ; Last element to 3050
MOV A, B ; Load first element into A
STA 3054H ; First element to Last location
LDA 3051H ; A = 2nd Element
MOV B, A ; B = 2nd Element
LDA 3053H ; A = Second last element
STA 3051H ; Store the Second last element into
3052
MOV A, B ; Load 2nd element into A
STA 3053H ; store that 2nd Element into 3053H
HLT
Descending sort of n number of array LXI H, 2000H
MOV C, M
DCR C

LOOP1:
MOV D,C
LXI H, 2001H
LOOP2:
MOV A, M
INX H
CMP M
JNC SKIP
MOV B, M
MOV M, A
DCX H
MOV M, B
INX H

SKIP:
DCR D
JNZ LOOP2
DCR C
JNZ LOOP1
HLT
To Reverse the ‘N’ No of array ; TO REVERSE THE ARRAY OF N ELEMENTS

LXI H, 2000H
MOV B, M

LXI D, 2001H ; POINTS AT THE START OF ARRAY


LXI H, 2001H ; POINTS AT THE START OF ARRAY

; NOW TO MAKE THE HL POINT TOWARDS THE


LAST ELEMENT
MOV A, L
ADD B
MOV L, A
JNC LOOP
INR H

LOOP:
DCX H ; TO EXACTLY POINT TO THE LAST
NUMBER

; NOW SETTING THE NO OF SWAPS


MOV A, B ; A= N
RRC ; HERE A IS DIVIDED BY TWO N/2
ANI 7FH; JUST IN CASE OF ODD NUMBERS IT
MAKES (N/2)-1
MOV C, A ; NOW C IS THE COUNTER C= N/2

;*HL=LAST BIT, DE= STARTING BTT


REVERSE: ; NOW ACTUAL REVERSING
LDAX D ; TAKE THE START VALUE TO A
MOV B, A ;B= START VALUE
MOV A, M ; A= END VALUE
STAX D ; END VALUE STORED IN START
MOV M, B ; START VALUE IN B STORED AT THE
END (HL)
INX D
DCX H
DCR C
JNZ REVERSE

HLT
Division of 16 bit by 8 bit LXI B, 3050H ; BC = Address of divisor
LHLD 3052H ; HL = Dividend (from 3052H
and 3053H)
XCHG ; DE = Dividend

LHLD 3050H ; HL = Divisor (from 3050H and


3051H)

MVI C, 00H ; C = Quotient Low


MVI A, 00H
MOV B, A ; B = Quotient High

LOOP:
MOV A, E
SUB L ;A=E-L
MOV A, D
SBB H ; A = D - H - CY

JC END_LOOP ; If borrow, we're done

; Perform actual subtraction


MOV A, E
SUB L
MOV E, A

MOV A, D
SBB H
MOV D, A

INX B ; Increment quotient

JMP LOOP

END_LOOP:
; Store Quotient at 3054H
MOV L, C
MOV H, B
SHLD 3054H

; Store Remainder at 3056H (DE holds


remainder)
XCHG
SHLD 3056H

HLT
3B: Multiplication of two 8-bit numbers using Shift LXI H, 2000H
and Add method MOV E,M
MVI D, 00H
INX H
MOV A,M
LXI H,0000H
MVI B,08H
BACK: DAD H
RAL
JNC SKIP
DAD D
SKIP: DCR B
JNZ BACK
SHLD 3050H
HLT
LARGEST NUMBER LXI H,3050H
MVI C,05H
MVI A,00H
BACK: CMP M
JNC NEXT
MOV A,M
NEXT: INX H
DCR C
JNZ BACK
MOV M,A
HLT
SMALLEST NUMBER LXI H, 3050H
MVI C,05H
MVI A,FFH
BACK: CMP M
JC NEXT
MOV A,M
NEXT: INX H
DCR C
JNZ BACK
MOV M,A
HLT
COUNTING ODD NUMBERS LXI H, 3050H
MVI C, 0AH
MVI D, 00H
BACK: MOV A, M
ANI 01H
JZ SKIP
INR D
SKIP: INX H
DCR C
JNZ BACK
MOV A, D
STA 3070H
HLT
SUM OF EVEN NUMBERS LDA 3000H
MOV C, A
LXI H, 3001H
MVI B, 00H
BACK: MOV A, M
ANI 01H
JNZ SKIP
MOV A,B
ADD M
MOV B,A
SKIP: INX H
DCR C
JNZ BACK
STA 3020H

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy