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

Program Explanation-EXP2

The document explains two 8051 assembly code programs that copy data from one memory location to another. The first program copies 5 bytes from memory starting at 30H to 50H without overlap, while the second program attempts to copy 10 bytes from 30H to 35H but fails due to overlapping memory regions. The result of the second program is that the destination contains duplicated data from the source, losing the original data in the overlapping area.

Uploaded by

22cs024
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Program Explanation-EXP2

The document explains two 8051 assembly code programs that copy data from one memory location to another. The first program copies 5 bytes from memory starting at 30H to 50H without overlap, while the second program attempts to copy 10 bytes from 30H to 35H but fails due to overlapping memory regions. The result of the second program is that the destination contains duplicated data from the source, losing the original data in the overlapping area.

Uploaded by

22cs024
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

Program Explanation:

1. ORG 000h:
This directive sets the origin of the program to memory
address 0000h. This is where the program will start executing.
2. MOV R0, #30H:
This instruction moves the value 30H (hexadecimal) into
register R0. R0 is now pointing to memory address 30H.
3. MOV R1, #50H:
This instruction moves the value 50H into register R1. R1 is now
pointing to memory address 50H.
4. MOV R3, #05H:
This instruction moves the value 05H into register R3. R3 will act as a
counter for a loop.
5. BACK: MOV A, @R0:
This is a label (BACK:) that marks the start of a loop. The
instruction MOV A, @R0 moves the contents of the memory location
pointed to by R0 into the accumulator (A).
6. MOV @R1, A:
This instruction moves the contents of the accumulator ( A) into the
memory location pointed to by R1.
7. INC R0:
This increments the value in R0 by 1, so it now points to the next
memory location.
8. INC R1:
This increments the value in R1 by 1, so it now points to the next
memory location.
9. DJNZ R3, BACK:
This instruction decrements the value in R3 by 1 and jumps to the
label BACK if R3 is not zero. This creates a loop that will run 5 times
(since R3 was initially set to 05H).
10. END:
This directive marks the end of the program.

What Does This Program Do?

 The program copies a block of 5 bytes of data from memory


locations starting at 30H to memory locations starting at 50H.
 It uses R0 as a pointer to the source memory location (30H)
and R1 as a pointer to the destination memory location ( 50H).
 The loop runs 5 times (R3 = 05H), copying one byte at a time and
incrementing the pointers (R0 and R1) after each copy.

CODE FOR WITHOUT OVERLAPPING

org 000h

MOV R0, #30H

MOV R1, #50H


MOV R3, #05H

BACK: MOV A,@R0

MOV @R1, A

INC R0

INC R1

DJNZ R3, BACK

END

WITH OVERLAPPING CODE:

org 000h

MOV R0, #30H

MOV R1, #35H

MOV R3, #0AH

BACK: MOV A, @R0

MOV @R1, A

INC R0

INC R1

DJNZ R3, BACK

END

The provided 8051 assembly code copies 10 bytes of data from


memory locations starting at 30H to a destination starting at 35H. Here's
the step-by-step explanation:

1. Initialization:
o R0 is set to 30H (source address).

o R1 is set to 35H (destination address).

o R3 is loaded with 0AH (10 iterations).

2. Loop Execution:
o The loop (BACK) runs 10 times (DJNZ R3, BACK).

o Each iteration:
 Copies a byte from the address in R0 to the accumulator
(MOV A, @R0).

 Writes the accumulator's value to the address in R1 (MOV


@R1, A).

 Increments R0 and R1 to point to the next


source/destination addresses.

3. Overlap Issue:
o The source (30H–39H) and destination (35H–3EH)
regions overlap.

o First 5 iterations: Bytes from 30H–34H are copied to 35H–


39H, overwriting the original data in 35H–39H.

o Next 5 iterations: Bytes from 35H–39H (now containing the


copied data from 30H–34H) are copied to 3AH–3EH.

o Result: The destination (35H–3EH) contains two copies of


the original data from 30H–34H. The original data from 35H–
39H is lost.

Final Outcome:
The code attempts to copy 10 bytes from 30H to 35H but fails due to
overlapping regions. The destination ends up with duplicated data from
the first half of the source (30H–34H), repeated in 35H–39H and 3AH–3EH.

You might also like