51单片机的汇编编程

从首地址2000H 长度为1000H的数据表中 查出A的ASCII码 将其个数存入2010H和2011单元中。
请写出完整的汇编程序。谢谢

第1个回答  2010-04-16
ORG 0000H
MAIN: MOV SP,#07H
MOV DPTR,#2000H ;起始地址
MOV R2,#03H ;初始化,定义1000次
MOV R3,#0E8H
MOV R0,#00H ;清零,用于循环加1
MOV R4,#00H ;清零
MOV R5,#00H ;清零
CLR C
MOV A,#0
JMP L3 ;跳转
L2: CLR C ;溢出后Cy清零
INC R5 ;高位加1
JMP L1 ;跳转
L3: MOVC A,@A+DPTR ;取数值
CJNE A,#41H,L1 ;与“A”比较
INC R4 ;相等时加1
JC L2 ;大于0FFH后,再加1,溢出
L1: INC R0
MOV A,R0
DJNZ R3,L3
MOV R3,#0E8H ;在赋初值
DJNZ R2,L3
MOV DPTR,#2010H ;低位的R4中的个数放入2010H单元中
MOV A,R4
MOVX @DPTR,A
MOV A,R5 ;高位的R5中的个数放入2011H单元中
MOV DPTR,#2011H
MOVX @DPTR,A
END
第2个回答  2010-04-13
ORG 0000H
MOV DPTR,#2000H
MOV R0,#2AH ;#2AH * #60H=#1000H
MOV R1,60H
CLR R2
CLR R3

LOOP:CLR A
MOVC A,@A+DPTR
CJNE A,#41H,QUET ;与A的ASCII码#41H比较,不等->转移
MOV A,R2
INC A
MOV A,R2
JC JIAYI ;溢出一次,R3+1
LJMP QUET
JIAYI:INC R3
LJMP QUET

QUET:INC DPTR
DJNZ R0,LOOP
DJNZ R1,LOOP

MOV DPTR,#2010H
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
END本回答被网友采纳
第3个回答  2020-04-04
1:
KEY1
EQU
P2.2
KEY2
EQU
P2.1
KEY3
EQU
P2.0
RED
EQU
P1.4
YELLOW
EQU
P1.5
GREEN
EQU
P1.6
ORG
0000H
LJMP
MAIN
ORG
0030H
MAIN:
SETB
RED
SETB
YELLOW
SETB
GREEN
LP:
JB
KEY1,LP1
CLR
RED
SJMP
LP
LP1:
JB
KEY2,LP2
CLR
YELLOW
SJMP
LP
LP2:
JB
KEY3,MAIN
CLR
GREEN
SJMP
LP
END
2:
KEY1
EQU
P2.2
ORG
0000H
LJMP
MAIN
ORG
0030H
MAIN:
MOV
R0,#0
LP:
JB
KEY1,DISP
JNB
KEY1,$
INC
R0
CJNE
R0,#10,DISP
MOV
R0,#0
DISP:
MOV
DPTR,#LEDTAB
MOV
A,R0
MOVC
A,@A+DPTR
MOV
P0,A
SJMP
LP
TABLE:
;
共阴极数码管显示代码表
DB
3FH,06H,5BH,4FH,66H
;01234
DB
6DH,7DH,07H,7FH,6fh
;56789
END
相似回答