1. 统计以片外300H开始的8个字节存储单元中偶数的个数,并将结果存于片内30H中。
2. 统计以TAB开始的6个字存储单元中奇数的个数。并将结果存于片外30H中。
3. 统计以片内40H开始的十个字节存储单元中正数、负数和零的个数,并将其分别存入X(30H)、Y(50H)和Z(60H)三个变量中。
4. 出以片外40H开始的6个单元中第一个7的数的地址,并将其存入片内30H中。
5. 求TAB表中班上16位同学的平均成绩,并将结果存入片外300H中
6. 求TAB表中6个BCD码的和,并将结果存于片内30H和31H中。
7. 片内40H开始10H单元中,统计每个单元1的位数,并将位数存于50H开始的单元中
8. 统计以片外3000H开始的十个字节存储单元中大于100数的个数。
9. 将片内200H开始的十个字节存储单元中数为8的清零。
10. 实现将存于片外30H开始的5个字节存储单元中的非组合型BCD码分别转换成ASCII码,结
果存于以片内40H开始的单元中。(不能用查表法)
11. 实现将存于TT表中的5个字节存储单元中的组合型(压缩型)BCD码分别转换成ASCII码,结果存于以片外2000H开始的单元中。
12. 求班上30名同学的平均成绩(只保留整数),并将结果存入片内30H(整数)中。
13. 在片内30H开始的存储区中,存放14H个带符号数。要求出其中最小的一个数,并存到片外30H单元中。
14. 在片内30H开始的存储区中,存放14H个无符号数。要求出其中最大的一个数,并存到片外30H单元中。
15. 用软件实现1S定时。
16. 将存于片外3000H开始的5个字节存储单元中的数从小到大排序后,存于以片外4000H开始的单元中。
17. 统计片外4000H开始的单元中1的个数。
18. 求以片内40H开始的十个字节存储单元中偶数的和。
19. 求以片外2000H开始的十个字节存储单元中BCD码的和
20. 将存于3000H开始的字符串移动到以4000H开始的单元中,并测试字符串的长度。
21. 用查表法完成Y=X3
例:将内部RAM单元中20H单元到2FH单元的数传到外部RAM中的2000H到200FH单元中.
R2 ← 10H, R0 ←20H
DPTR ←2000H
A ←@R0
@DPTR ←A
R0 ←(R0)+1
DPTR←(DPTR)+1
DPTR ←2000H
A ←@R0
@DPTR ←A
R0 ←(R0)+1
DPTR←(DPTR)+1
(R2)-1=0?
END
• 源程序:
ORG 0000H
MOV R0,#20H
MOV DPTR,#2000H
MOV R2,#10H
LOOP:MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R2,LOOP
SJMP $
ORG 0000H
MOV R0,#20H
MOV DPTR,#2000H
MOV R2,#10H
LOOP:MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R2,LOOP
SJMP $
END
• 设置进行数据传送的内部和外部RAM的首地址
• 设定循环次数
• RAM地址加“1”
传送类程序设计
注:被传送数的大小,格式 判断存在于片内还是片外
要取数据的大小
传递字或字符串长短及类型的不同
ღ片内→片内❀
例:将片内40H单元中的数传到片内60H中
MOV 60H, 40H
ღ片内↔片外❀
例1:将片内40H传送到片外100H单元中
MOV A, 40H
MOV DPTR, #0100H
MOVX @DPTR,A
例2:将片外60H单元中的数传送到片内40H单元中
MOV R0,#60H
MOVX A,@R0
MOV 40H,A
注;片外必须用指针。用累加器做中间传输。
ღ片外→片外❀
例1:将片外40H单元中的数传送到片外60H中
MOV R0, #40H
MOV R1, #60H
MOVX A, @R0
MOVX @R1,A
例2:将片外60H单元中的数传送到片内40H单元中
MOV R0,#60H
MOVX A,@R0
MOV 40H,A
注;片外必须用指针。用累加器做中间传输。
ღ片外→片外❀
例1:将片外40H单元中的数传送到片外60H中
MOV R0, #40H
MOV R1, #60H
MOVX A, @R0
MOVX @R1,A
例2:将片外400H单元中的数传送到片外600H中
MOV DPTR, #0400H
MOVX A, @DPTR
MOV DPTR , #0600H
MOVX @DPTR,A
例3:把以片外400H开始的十个数传送到以片外600H开始的十个数中
MOV R2, #06H
MOV R3, #00H
MOV DPTR,#0400H
MOV R7, #10
L1: MOV A, @DPTR
INC DPTR字符串长度为0和50之间
MOV R0, DPL
MOV R1, DPH
MOV DPL, R3
MOV DPH, R2
MOV @DPTR,A
INC DPTR
MOV R2, DPH
MOV R3, DPL
MOV DPL, R0
MOV DPH, R1
DJNZ R7, L1
统计程序的设计
ღ个数统计❀
①统计正数 负数 及 0的个数
例:统计以片内10H开始的十个字节存储单元中正数,负数和0的个数。并将其分别存入X,Y,Z三个变量中。
ORG 3000H
X EQU R5
Y EQU R6
Z EQU R7
MOV R0,#0AH
MOV R1,#10H
L1:CLR C
MOV X,#0
MOV Y,#0
MOV Z,#0
MOV A,@R1
RLC A
JZ L3
JC L2
INC X
SJMP L4
L2:INC Y
SJMP L4
L3:INC Z
L4: INC R1
DJNZ R0,L1
END
②统计奇数及偶数的个数
例:统计以片外2000H开始的十个字节存储单元中偶数的个数,存于片内30H中。
ORG 1000H
MOV DPTR,#2000H
MOV R0,#0AH
CLR R1
L1:MOVX A,@DPTR
RRC A
JC L2
INC R1
L2: INC DPTR
DJNZ R0,L1
END
③统计符合某类型的一类数的个数
例:将片内20H开始的十个字节存储单元中数为8的清零
ORG 1000H
MOV R0,#0AH
MOV R1,20H
L1:MOV A,@R1
CJNE A,#8,L2
MOV @R1,#0
L2:INC R1
DJNZ R0,L1
END
ღ分类统计❀
例:将片内以30H开始的十个字节存储单元中的正数取出,放入40H开始的单元中,负数放入50H开始的单元中,零放在60H开始的单元中。
ORG 1000H
MOV R0,#30H
MOV R2,#0AH
MOV R3,#60H
MOV R4,#40H
MOV R5,#50H
L1:CLR C
MOV A,@R0
CJNE A,#0,L2
MOV 43h,R3
MOV R1,43h
MOV @R1,A
INC R3
SJMP L4
L2:JC L3
MOV 43h,R4
MOV R1,43h
MOV @R1,A
INC R4
SJMP L4
L3:MOV 43h,R5
MOV R1,43h
MOV @R1,A
INC R5
L4:INC R0
DJNZ R2,L1
END
·代码转换类程序设计
ღ数值进制转换❀
二进制数,八进制数,十进制数,十六进制数,BCD码及ASCII码之间的转换。
例:实现将存于TT表中的5个字节存储单元中的组合型(压缩型)BCD码分别转换成ASCII码,结果存于以片内50H开始的单元中。
ORG 1000H
MOV DPTR,#TT
MOV R2,#05H
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论