Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

What are the pseudo instructions commonly used in the MCS-51 assembly language?

ID: 2293492 • Letter: W

Question

What are the pseudo instructions commonly used in the MCS-51 assembly language? What effect does each directive have? 6. Provided data area from 1000H to 10FFH in external RAM, transfer the data to the area starting at 2500H in external RAM. Please write the program. 11. The crystal oscillator frequency of system is 12MHz. Write the delay subroutine with delay time of 50ms. What are the pseudo instructions commonly used in the MCS-51 assembly language? What effect does each directive have? 6. Provided data area from 1000H to 10FFH in external RAM, transfer the data to the area starting at 2500H in external RAM. Please write the program. 11. The crystal oscillator frequency of system is 12MHz. Write the delay subroutine with delay time of 50ms. What are the pseudo instructions commonly used in the MCS-51 assembly language? What effect does each directive have? 6. Provided data area from 1000H to 10FFH in external RAM, transfer the data to the area starting at 2500H in external RAM. Please write the program. 11. The crystal oscillator frequency of system is 12MHz. Write the delay subroutine with delay time of 50ms.

Explanation / Answer

Answer :- Assembler directives in MCS_51 is also known as Pseudo Instructions. These instructions are used for giving direction to the assembler.

Example :- DB, EQU, ORG, END etc. These directives does not take machine cycles. This is same as #define macros in C programming.

/*****************************************************************************/

MOV R0, #00h ;R0 = 00

MOV DPTR, #0000h ;DPTR = 0000h

Loop1:

MOV DPH, #10h ;lower byte of DPTR i.e. DPL = 10h

MOVX A, @DPTR ;read the value from address in DPTR, keep it in A

MOV DPH, #25h ;higher byte of DPTR i.e. DPH = 25h

MOVX @DPTR, A ;write value in A to address in DPTR

INC DPTR ;DPTR = DPTR + 1

INC R0 ;R0 = R0 + 1

JNZ R0, Loop1 ;goto label Loop1 if R0 not zero

END

/********************************************************************************/

Frequency = 12 Mhz, T = 1/12 us .
Count value = delay / T = 0.05*12*1000000 = 600000 = 84 x 84 x 85, nearly same as 600000, so the subroutine is-

Delay50ms: ;subroutine name
MOV R0, #84 ;R0 = 84

LoopOut:
MOV R1, #84 ;R1 = 84
MOV R2, #85 ;R2 = 85
AJMP LoopIn ;goto LoopIn
Redo:
DJNZ R0, LoopOut ;R0 = R0 – 1
AJMP SubEnd

LoopMid:
MOV R2, #85 ;R2 = 85
DJNZ R1, LoopIn ;R1 = R1 – 1 and if not zero goto LoopIn
AJMP Redo ;if R1 = 0, goto label LoopOut

LoopIn:
DJNZ R2, LoopIn
AJMP LooMid

SubEnd :
END

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote