MC Lab Programs with Output
MC Lab Programs with Output
a.
No. of bytes
MOV R2, 88h 02
END
INPUT
88h = 22h
OUTPUT
R2 = 22h
b.
No. of bytes
MOV R1, #02h 02
MOV @R1, 88h 02
END
INPUT
R1 = 02h
OUTPUT
02h = 88h
2. Addition of two 8-bit numbers to get 8-bit sum using (i). Immediate
addressing mode and (ii). Direct addressing mode
No. of bytes
MOV A, #8Eh 02
ADD A, #2Eh 02
MOV R1, A 01
END
INPUT Output
A = 8Eh R1 = BCh
A = 2Eh
No. of bytes
MOV A, 40h 02
ADD A, 41h 02
MOV 42h, A 02
END
INPUT Output
40h = Ah 42h = 18h
41h = Eh
INPUT Output
50h = AFh 52h = 8Ch
51h = DDh 53h = 01h
INPUT Output
40h = 33h 44h = 55h
42h = 22h 45h = 43h
41h = 32h
43h = 11h
No. of bytes
MOV A, 50h 02
ADD A, 52h 02
MOV 54h, A 02
MOV A, 51h 02
ADDC A, 53h 02
MOV 55h, A 02
MOV A, #00h 02
ADDC A, #00h 02
MOV 56h, A 02
END
INPUT Output
50h = E1h 54h = 8Dh
52h = ACh 55h = 8Ch
51h = AFh 56h = 01h
53h = DCh
No. of bytes
MOV A, 40h 02
SUBB A, 41h 02
MOV 42h, A 02
END
INPUT Output
40h = AAh 42h = 98h
41h = 12h
No. of bytes
MOV A, 40h 02
SUBB A, 42h 02
MOV 44h, A 02
MOV A, 41h 02
SUBB A, 43h 02
MOV 45h, A 02
END
INPUT Output
40h = 1Ch 44h = 08h
42h = 14h 45h = 04h
41h = B0h
43h = ACh
INPUT Output
40h = ABh 42h = B4h
41h = 1Ch 43h = 12h
INPUT Output
40h = 56h 42h = 04h
41h = 12h 43h = 0Eh
INPUT Output
A = AAh 41h = E4h
B = AAh 43h = 70h
INPUT Output
40h = 05h 41h = 7Dh
B = 05h 42h = 00h
INPUT Output
40h = 2h 42h = 5h
41h = 3h
Calculation:
13. Addition of two 2 digit BCD numbers
No. of bytes
MOV A, 40h 02
ADD A, 41h 02
DA A 01
MOV 42h, A 02
CLR A 01
ADDC A, #00h 02
MOV 43h, A 02
END
INPUT Output
40h = 41h 42h = 78h
41h = 37h 43h = 00h
Calculation:
Calculation:
15. Data transfer program from one block to another block within internal
RAM
No. of bytes
MOV R3, #05h 02
MOV R0, #50h 02
MOV R1, #60h 02
UP: MOV A, @R0 01
MOV @R1, A 01
INC R0 01
INC R1 01
DJNZ R3, UP 02
END
INPUT Output
50h = 11 60h = 11
51h = 12 61h = 12
52h = 13 62h = 13
53h = 14 63h = 14
54h = 15 64h = 15
16. Data transfer program between internal RAM and external RAM
No. of bytes
MOV R0, #40h 02
MOV DPTR, #9500 03
MOV R3, #05h 02
AGAIN: MOV A, @R0 01
MOVX @DPTR, A 01
INC R0 01
INC DPTR 01
DJNZ R3, AGAIN 02
END
INPUT Output
40h = 11 9500h = 11
41h = 12 9501h = 12
42h = 13 9502h = 13
43h = 14 9503h = 14
44h = 15 9504h = 15
Input:
INPUT Output
50h = 37 50h = 04
51h = 24 51h = 12
52h = 12 52h = 19
53h = 19 53h = 24
54h = 04 54h = 37
19. Arranging data of an array in descending order
No. of bytes
ORG 0000H
MOV R4, 30H 02
MOV R0, #50H 02
L1: MOV B, R4 01
MOV R2, B 01
MOV A, R0 01
INC A 01
MOV R1, A 01
L2: MOV 10H, @R0 02
MOV A, @R1 02
CJNE A, 10H, L3 03
SJMP NEXT 02
L3: JNC EXCHANGE 02
SJMP NEXT 02
EXCHANGE: MOV @R0, A 02
MOV @R1, 10H 02
NEXT: INC R1 01
DJNZ R2, L2 02
INC R0 01
DJNZ R4, L1 02
END
INPUT Output
30h = 4
50h = 37 50h = 37
51h = 24 51h = 24
52h = 12 52h = 19
53h = 19 53h = 12
54h = 04 54 = 04
20. Program to add first 10 natural numbers
ORG 0000H
MOV A, #0h
MOV R2, #0Ah
MOV R0, #0h
AGAIN : INC R0
ADD A, R0
DJNZ R2, AGAIN
MOV 46h, A
END
INPUT Output
30h = 37 40h = 04
31h = 24
32h = 12
33h = 19
34h = 04
INPUT Output
70h = AA 71h = 04
INPUT Output
70h = BC 71h = 03
INPUT Output
70h = A8 71h = 05
72h = 03
INPUT Output
50h = 37 71h =
51h = 24
52h = 12
53h = 19
54h = 04
28. Program to find the number of positive and negative bytes in an array
MOV R0, #50H
MOV R7, #05H
MOV R5, #00H
MOV R6, #00H
BACK: MOV A, @R0
RLC A
JNC NEXT
INC R5
SJMP SKIP
NEXT: INC R6
SKIP: INC R0
DJNZ R7, BACK
MOV 71H, R5
MOV 72H, R6
END
INPUT Output
50h = 37 71h =
51h = 24 72h =
52h = 12
53h = 19
54h = 04
INPUT Output
50h = 37 71h = 03
51h = 24
52h = 12
53h = 19
54h = 04
INPUT Output
50h = 37 71h = 02
51h = 24 72h = 03
52h = 12
53h = 19
54h = 04
MAIN:
MOV P1, A ; Send current value of accumulator to Port 1
ACALL DELAY; Call delay for visibility
INC A ; Increment the counter (A = A + 1)
SJMP MAIN ; Repeat forever
;------------------------------------
; Simple Delay Subroutine
;------------------------------------
DELAY:
MOV R2, #255h
D1: MOV R3, #255h
D2: DJNZ R3, D2
DJNZ R2, D1
RET
END
Output:
00h to FFh
Output:
00h to 09h
35. Program for BCD counter to a particular value
; BCD Counter up to a Specific Value (for 8051)
; Output BCD on Port 1 (P1)
ORG 0000H
START:
MOV P1, A ; Output current BCD value to Port 1
ACALL DELAY ; Short delay
CONTINUE:
; Increment BCD
ADD A, #01H ; Add 1 to the BCD value
; ANL A, #0FH ; Mask upper nibble (optional)
Output:
P1 = 0x50 = 01010000
36. Program for Binary counter to a particular value
; Binary Counter up to a Specific Value (8051 Assembly)
; Output binary value to Port 1 (P1)
ORG 0000H
CONTINUE:
INC A ; Simple binary increment
SJMP START ; Repeat
; Delay Subroutine
DELAY:
MOV R2, #200
D1: MOV R3, #255
D2: DJNZ R3, D2
DJNZ R2, D1
RET
DONE:
NOP ;
END
Output:
P1 = 0x0F = 00001111
37. Program to convert BCD to HEX
ORG 0000H
DONE:NOP
END
Output:
P1 = 0x2D = 00101101
; Now:
; R1 = Upper decimal digit (most significant)
; R2 = Lower decimal digit (least significant)
DONE:
NOP
END
Output:
P1 = 0x05 = 00000101