8051 Microcontroller Program
8051 Microcontroller Program
LABEL
ADDRESS
MNEMONICS
OPCODE
C3
COMMENT
8000
CLR C
8001
MOV DPTR,#8500H
8004
MOVX A,@DPTR
E0
8005
MOV R0,A
F8
8006
INC DPTR
A3
8007
E0
8008
ADD A,R0
28
8009
INC DPTR
A3
800A
MOVX @DPTR,A
F0
800B
LCALL 00BB
90 85 00
12 00 BB
Stop
LABEL
ADDRESS
MNEMONICS
OPCODE
C3
COMMENT
8000
CLR C
8001
MOV DPTR,#8500H
8004
MOVX A,@DPTR
E0
8005
MOV R0,A
F8
8006
INC DPTR
A3
8007
E0
8008
SUBB A,R0
98
8009
INC DPTR
A3
800A
MOVX @DPTR,A
F0
800B
LCALL 00BB
90 85 00
12 00 BB
Stop
PROGRAM:
Addition Of Two 16-Bit Numbers
LABEL
ADDRESS
MNEMONICS
OPCODE
C3
COMMENT
8000
CLR C
8001
MOV DPTR,#8500H
8004
MOVX A,@DPTR
E0
8005
MOV R0,A
F8
8006
INC DPTR
A3
8007
MOVX A,@DPTR
E0
8008
MOV R1,A
F9
8009
INC DPTR
A3
800A
MOVX A,@DPTR
E0
800B
MOV R2,A
FA
800C
INC DPTR
A3
800D
MOVX A,@DPTR
E0
800E
ADD A,R1
29
800F
INC DPTR
A3
8010
MOVX @DPTR,A
F0
8011
MOV A,R0
E8
8012
ADDC A,R2
3A
8013
INC DPTR
A3
8014
MOVX @DPTR,A
F0
8015
LCALL 00BB
90 85 00
12 00 BB
Stop
PROGRAM:
Multiplication Of Two 8-Bit Numbers
LABEL
ADDRESS
MNEMONICS
OPCODE
8000
CLR C
8001
MOV DPTR,#8500H
8004
MOVX A,@DPTR
8005
MOV B,A
F5 F0
8007
INC DPTR
A3
8008
MOVX A,@DPTR
E0
8009
MUL AB
A4
800A
INC DPTR
A3
800B
MOVX @DPTR,A
F0
800C
MOV A,B
E5 F0
800E
INC DPTR
A3
800F
MOVX @DPTR,A
F0
8010
LCALL 00BB
PROGRAM:
C3
COMMENTS
90 85 00
E0
12 00 BB
Stop
Ascending Order
LABEL
AGAIN
COUNT
COMP
CHNG
ADDRESS
MNEMONICS
OPCODE
8000
CLR C
8001
MOV DPTR,#8500H
8004
MOVX A,@DPTR
E0
8005
MOV R0,A
F8
8006
MOV R3,A
FB
8007
MOV DPTR,#8501H
800A
MOV A,R3
EB
800B
MOV R1,A
F9
800C
DJNZ R1,COMP
D9 05
800E
DJNZ R0,AGAIN
D8 F7
8010
LCALL 00BB
12 00 BB
8013
MOV R2,DPL
AA 82
8015
MOVX A,@DPTR
8016
MOV B,A
75 F0
8018
INC DPTR
A3
8019
MOVX A,@DPTR
E0
801A
CJNE A,B,CHNG
B5 F0 02
801D
SJMP COUNT
80 ED
801F
JNC COUNT
50 EB
8021
MOV DPL,R2
8A 82
8023
MOVX @DPTR,A
F0
8024
INC DPTR
A3
8025
MOV A,B
E5 F0
8027
MOVX @DPTR,A
8028
SJMP COUNT
PROGRAM:
C3
COMMENTS
90 85 00
90 85 01
E0
F0
80 E2
Stop
LSB of DPTR is stored in R2
Get the first data in ACC
Move the ACC content to B reg
LABEL
CONT
LAST
CHNG
ADDRESS
MNEMONICS
OPCODE
C3
COMMENTS
8000
CLR C
8001
MOV DPTR,#8500H
8004
MOVX A,@DPTR
E0
8005
MOV R5,A
FD
8006
INC DPTR
A3
8007
MOVX A,@DPTR
E0
8008
DEC R5
1D
8009
MOV 40H,A
800B
INC DPTR
A3
800C
MOVX A,@DPTR
E0
800D
CJNE A,40H,CHNG
8010
90 85 00
F5 40
B5 40 09
DJNZ R5,CONT
DD F9
8012
MOV A,40H
E5 40
8014
INC DPTR
A3
8015
MOVX @DPTR,A
F0
8016
LCALL 00BB
8019
JC LAST
40 F5
801B
MOV 40H,A
F5 40
801D
SJMP LAST
80 F1
PROGRAM:
12 00 BB
Stop
LABEL
ADDRESS
MNEMONICS
OPCODE
8000
CLR C
8001
MOV DPTR,#8500H
8004
MOVX A,@DPTR
8005
MOV R0,#30H
8007
SUBB A,R0
8008
CJNE A,#0AH,LOOP1
800B
SUBB A,#07H
94 07
800D
SJMP LOOP3
80 02
LOOP1
800F
JNC LOOP2
50 FA
LOOP3
8011
INC DPTR
A3
8012
MOVX @DPTR,A
F0
8013
LCALL 00BB
LOOP2
PROGRAM:
C3
COMMENTS
90 85 00
E0
78 30
98
B4 0A 04
12 00 BB
Stop
LABEL
LOOP2
LOOP1
LOOP3
ADDRESS
MNEMONICS
OPCODE
8000
CLR C
8001
MOV DPTR,#8500H
8004
MOVX A,@DPTR
8005
CJNE A,#0AH,LOOP1
8008
ADD A,#37H
24 37
800A
SJMP LOOP3
80 04
800C
JNC LOOP2
50 FA
800E
ADD A,#30H
24 30
8010
INC DPTR
A3
8011
MOVX @DPTR,A
F0
8012
LCALL 00BB
PROGRAM:
C3
COMMENTS
90 85 00
E0
B4 0A 04
12 00 BB
Stop
LABEL
ADDRESS
MNEMONICS
OPCODE
8000
CLR C
8001
MOV DPTR,#8500H
8004
MOVX A,@DPTR
8005
MOV B,#64H
8008
MUL AB
A4
8009
MOV R0,A
F8
800A
INC DPTR
A3
800B
MOVX A,@DPTR
E0
800C
ANL A,#0FH
800E
MOV R1,A
F9
800F
MOVX A,@DPTR
E0
8010
ANL A,#F0H
8012
SWAP A
8013
MOV B,#0AH
8016
MUL AB
A4
8017
ADD A,R1
29
8018
ADDC A,R0
38
8019
INC DPTR
A3
801A
MOVX @DPTR,A
F0
801B
LCALL 00BB
PROGRAM:
C3
COMMENTS
90 85 00
E0
75 F0 64
54 0F
54 F0
C4
75 F0 0A
12 00 BB
Stop
LABEL
CONV
LOOP1
ADDRESS
MNEMONICS
OPCODE
8000
MOV DPTR,#8500H
90 85 00
8003
MOVX A,@DPTR
E0
8004
MOV R0,A
F8
8005
MOV R1,#00H
79 00
Initialize R1 to 00H
8007
MOV R2,#00H
7A 00
Initialize R2 to 00H
8009
MOV A,#00H
74 00
800B
CLR C
C3
800C
INC A
04
800D
DA A
D4
800E
MOV R1,A
F9
800F
JNC LOOP1
50 01
8011
INC R2
8012
DJNZ R0,CONV
8014
MOV A,R2
EA
8015
INC DPTR
A3
8016
MOVX @DPTR,A
F0
8017
MOV A,R1
E9
8018
INC DPTR
A3
8019
MOVX @DPTR,A
F0
801A
LCALL 00BB
PROGRAM:
0A
D8 F7
12 00 BB
COMMENTS
Move the address 8500 to data pointer
Stop
Square Root
LABEL
LOOP1
NEXT
ADDRESS
MNEMONICS
OPCODE
8000
MOV DPTR,#8500H
90 85 00
8003
MOVX A,@DPTR
E0
8004
MOV R0,A
F8
8005
MOV R1,#01H
79 01
Initialize R1 to 01H
8007
MOV R2,#00H
7A 00
Initialize R2 to 00H
8009
CLR C
C3
800A
MOV A,R0
E8
800B
SUBB A,R1
99
800C
MOV R0,A
F8
800D
INC R2
0A
800E
JZ NEXT
8010
INC R1
09
8011
INC R1
09
8012
SJMP LOOP1
80 F6
8014
MOV A,R2
EA
8015
INC DPTR
A3
8016
MOVX @DPTR,A
F0
8017
LCALL 00BB
PROGRAM:
Least Common Multiplier (LCM)
60 04
12 00 BB
COMMENTS
Move the address 8500 to data pointer
Stop
LABEL
COMP
NEXT
FIRST
LAST
ADDRESS
MNEMONICS
OPCODE
8000
MOV DPTR,#8500H
90 85 00
8003
MOVX A,@DPTR
E0
8004
MOV R0,A
F8
8005
MOV 40H,A
F5 40
8007
INC DPTR
A3
8008
MOVX A,@DPTR
E0
8009
MOV R1,A
F9
800A
CJNE A,40H,NEXT
800D
SJMP LAST
80 0F
800F
JNC FIRST
50 04
8011
CLR C
C3
8012
ADD A,R1
29
8013
SJMP COMP
8015
MOV R2,A
FA
8016
MOV A,40H
E5 40
8018
ADD A,R0
8019
MOV 40H,A
F5 40
801B
MOV A,R2
EA
801C
SJMP COMP
801E
B5 40 02
80 F5
28
COMMENTS
Move the address 8500 to data pointer
80 ED
INC DPTR
A3
801F
MOVX @DPTR,A
F0
8020
LCALL 00BB
PROGRAM:
Greatest Common Divisor (GCD)
12 00 BB
Stop
LABEL
LOOP1
LOOP2
ADDRESS
MNEMONICS
OPCODE
90 85 00
COMMENTS
8000
MOV DPTR,#8500H
8003
MOVX A,@DPTR
E0
8004
MOV R0,A
F8
8005
INC DPTR
A3
8006
MOVX A,@DPTR
E0
8007
MOV R1,A
F9
8008
MOV R2,#01H
7A 01
Initialize R2 to 01H
800A
MOV R3,#00H
7B 00
Initialize R3 to 00H
800C
CLR C
C3
800D
MOV A,R2
EA
800E
SUBB A,R0
98
800F
JZ LOOP3
60 1D
8011
MOV A,R2
EA
8012
SUBB A,R1
99
8013
JZ LOOP4
60 29
8015
MOV A,R2
EA
8016
MOV B,A
F5 F0
8018
MOV A,R0
E8
8019
DIV AB
84
801A
MOV A,B
801C
CJNE A,#00H,LOOP2
801F
MOV A,R2
EA
8020
MOV B,A
F5 F0
8022
MOV A,R1
E9
8023
DIV AB
84
8024
MOV A,B
8026
CJNE A,#00H,LOOP2
8029
MOV A,R2
EA
802A
MOV R3,A
FB
802B
INC R2
0A
Increment R2
802C
SJMP LOOP1
E5 F0
B4 00 0C
E5 F0
B4 00 02
80 DE
LOOP3
LAST
LOOP4
LOOP5
802E
MOV A,R2
EA
802F
MOV B,A
F5 F0
8031
MOV A,R1
E9
8032
DIV AB
84
8033
MOV A,B
8035
CJNE A,#00H,LOOP5
8038
MOV A,R2
EA
8039
INC DPTR
A3
803A
MOVX @DPTR,A
F0
803B
LCALL 00BB
803E
MOV A,R2
EA
803F
MOV B,A
F5 F0
8041
MOV A,R0
E8
8042
DIV AB
84
8043
MOV A,B
8045
CJNE A,#00H,LOOP5
8048
MOV A,R2
EA
8049
SJMP LAST
80 EE
804B
MOV A,R3
EB
804C
SJMP LAST
80 EB
PROGRAM:
Parity Bit Generation
E5 F0
B4 00 13
12 00 BB
E5 F0
B4 00 03
Stop
Move the content of R2 to ACC
Move the content of ACC to B-reg
LABEL
ADDRESS
MNEMONICS
OPCODE
8000
CLR C
8001
MOV DPTR,#8500H
8004
MOVX A,@DPTR
E0
8005
MOV R0,A
F8
8006
INC DPTR
A3
8007
E0
8008
ADD A,R0
28
8009
MOV A,0D0H
E5 D0
800B
ANL A,#01H
54 01
800D
INC DPTR
A3
800E
MOVX @DPTR,A
F0
800F
LCALL 00BB
PROGRAM:
Program Using Interrupt
C3
COMMENTS
90 85 00
12 00 BB
Stop
LABEL
ADDRESS
LOOP
8200
MNEMONICS
OPCODE
COMMENTS
MOV IE,#81H
75 A8 81
8203
MOV DPTR,#A003H
90 A0 03
8204
MOV A,#80H
8205
MOVX @DPTR,A
8207
MOV DPTR,#A001H
8208
MOV A,#FFH
8209
MOVX @DPTR,A
820A
SJMP LOOP
74 80
F0
90 A0 01
74 FF
F0
80 EF
Interrupt
LABEL
ADDRESS
MNEMONICS
OPCODE
8000
MOV DPTR,#A001H
90 A0 01
8003
MOV A,#00H
8004
MOVX @DPTR,A
F0
8005
RETI
32
74 00
COMMENTS
Assign A001H address to DPTR
Move the data 00H to ACC