1.试编写程序,查找在内部RAM的20H-40H单元中出现“00H”这一数据的次数,并将
结果存入41H单元。
ORG 1000H
START: MOV 40H,#00H ;关键字
MOV R0,#20H ;首地址
MOV R1,#21H ;单元个数
MOV R2,#00H ;关键词出现个数
LOOP: MOV A,@R0 ;取数据
CJNE A,40H,LOOP1 ;比较
INC R2 ;查到R2加1
LOOP1: INC R0 ;下一个地址
DJNZ R1,LOOP ;没查完则继续查
MOV 41H,R2 ;出现次数存在41H中
RET
2.试编写程序,查找内部单元的30H-50H单元中是否有0AAH这一数据,若有,则将51H
单元置为“01H”;若未找到,则将51H单元置为“00H”
ORG 1000H
START: MOV 40H,#0AH ;关键词
MOV R0,#30H ;首地址
MOV R1,21H ;单元个数
LOOP: MOV A,@R0 ;取数据
CJNE A,40H,LOOP1 ;比较
MOV 51H,#01H ;查到51H赋值01H
LJMP SJP
LOOP1: INC R0 ;下一个地址
DJNZ R1,LOOP ;没查完则继续查
MOV 51H,#00H ;查不到51H赋值00H
SJP: RET
3.实验三内容3
要求(1)使8在数码管上从右向左逐位移动,时间间隔0.5s;
(3)改变速度,只需修改R2的值;
(4)修改显示字符,MAIN: MOV A,#4FH
(5) RL A以后判断ACC.5这一位,如果为1则给A重新赋值#01H,否则继续循
环;
(6)只需将RL改成RR
提问:(1)给延时程序传递参数,可以改变延时时间
(2)动态显示中每位点亮后延时一段时间,然后再点亮下一位;
(3)因为数码管只有6个,而RLA则要移动到第八位再返回,所以到最左边要延时一会。
4.实验三内容4
(2)右移,则字位码首先赋值40H,然后右移,移到01H时重新赋值40H;ZWMADDR EQU 8002H
ZXMADDR EQU 8004H
ORG 0000H
ST: LJMP MAIN
ORG 0100H
MAIN: MOV R3,#40H ;字位码
MOV R4,#00H ;被显数字
LOOP: MOV DPTR,#CHAR ;字型码表首地址送DPTR
MOV A,R4
MOV A,@A+DPTR ;
MOV DPTR,#ZXMADDR
MOVX @DPTR,A
MOV A,R3
MOV DPTR,#ZWMADDR
MOVX @DPTR,A
MOV R2,#25H
LCALL DELAY
MOV A,R3
RR A
MOV R3,A
CJNE R3,#01H,NEXT
MOV R3,#40H
NEXT: INC R4 ;
CJNE R4,#10H,LOOP
SJMP MAIN
DELAY:…………
CHAR: DB 3FH,06H,……
(3)慢速一边,快速一边
ZWMADDR EQU 8002H
ZXMADDR EQU 8004H
ORG 0000H
ST: LJMP MAIN
ORG 0100H
MAIN: MOV R3,#40H ;字位码
MOV R4,#00H ;被显数字
LOOP: MOV DPTR,#CHAR ;字型码表首地址送DPTR
MOV A,R4
MOV A,@A+DPTR ;
MOV DPTR,#ZXMADDR
MOVX @DPTR,A
MOV A,R3
MOV DPTR,#ZWMADDR
MOVX @DPTR,A
MOV R2,#25H ;延时时间长则显示慢
LCALL DELAY
MOV A,R3
RR A
MOV R3,A
CJNE R3,#01H,NEX
MOV R3,#40H
NEX: INC R4 ;
CJNE R4,#10H,LOOP ;未显示完则loop,显示完了则loop1
MOV R3,#40H ;重新赋值字位码
MOV R4,#00H ;重新赋值被显数字
LOOP1: MOV DPTR,#CHAR ;字型码表首地址送DPTR
MOV A,R4
MOV A,@A+DPTR ;
MOV DPTR,#ZXMADDR
MOVX @DPTR,A
MOV A,R3
MOV DPTR,#ZWMADDR
MOVX @DPTR,A
MOV R2,#15H ;修改延时时间则显示快
LCALL DELAY
MOV A,R3
RR A
MOV R3,A
CJNE R3,#01H,NEXT
MOV R3,#40H
NEXT: INC R4 ;
CJNE R4,#10H,LOOP1
SJMP MAIN
DELAY:…………
CHAR: DB 3FH,06H,……
(4)慢速两遍,快速两遍
ZWMADDR EQU 8002H
ZXMADDR EQU 8004H
ORG 0000H
ST: LJMP MAIN
ORG 0100H
MAN0: MOV R5,#02H ; 慢显次数
MAN1:MOV R3,#40H ;字型码
MOV R4,#00H ;被显数字
LOOP: MOV DPTR,#CHAR ;字型码表首地址送DPTR
MOV A,R4
MOV A,@A+DPTR ;
MOV DPTR,#ZXMADDR
MOVX @DPTR,A
MOV A,R3
MOV DPTR,#ZWMADDR
MOVX @DPTR,A
MOV R2,#25H ;延时时间长则显示慢
LCALL DELAY
MOV A,R3
RR A
MOV R3,A
CJNE R3,#01H,NEX
MOV R3,#40H
NEX: INC R4 ;
CJNE R4,#10H,LOOP ;未显示完16个字符则loop,显示完了则往下执行
DJNZ R5, MAN1 ;慢显次数减一不为零则继续慢显,否则进入快显
KUAI0:MOV R6,#02H ; 快显次数
KUAI1:MOV R3,#40H ;重新赋值字位码
MOV R4,#00H ;重新赋值被显数字
LOOP1: MOV DPTR,#CHAR ;字型码表首地址送DPTR
MOV A,R4
MOV A,@A+DPTR ;
MOV DPTR,#ZXMADDR
MOVX @DPTR,A
MOV A,R3
MOV DPTR,#ZWMADDR
MOVX @DPTR,A
MOV R2,#15H ;修改延时时间则显示快
LCALL DELAY
MOV A,R3
RR A
MOV R3,A
CJNE R3,#01H,NEXT
MOV R3,#40H
NEXT: INC R4 ;
CJNE R4,#10H,LOOP1
DJNZ R6, K UAI1 ;快显次数减一不为零则继续快显,
SJMP MAIN ;快显两遍完成则重新开始
DELAY:…………
CHAR: DB 3FH,06H,……