1 / 6
文档名称:

C51优化设计之循环语句(上)——使用DJNZ循环指令提高执行效率.doc

格式:doc   大小:171KB   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C51优化设计之循环语句(上)——使用DJNZ循环指令提高执行效率.doc

上传人:小辰GG 2021/10/22 文件大小:171 KB

下载得到文件列表

C51优化设计之循环语句(上)——使用DJNZ循环指令提高执行效率.doc

文档介绍

文档介绍:C51 优化设计之循环语句(上) 使用 DJNZ 循环指令提高执行效率
C51 优化设计之循环语句(上) 使用 DJNZ 循环指令提高执行效率
[原创] 主题词:高效代码;循环语句 ;Keil C51;DJNZ
C51 有三种循环语句即 while,do-while 和 for, 这三种循环都可以用来处理同一问 题 ,基本上三者可以相互替换 .但由于 C51 是针对 51 汇编语言的编译器 ,如果不注 意 51 汇编指令的特点 , 不同的编程方式可能得到不同的程序性能 ( 执行速度和代 码长度 ).以计算 1+2+3+...+9+10 为例,下面做一对比 .
程序 1:
unsigned char i; unsigned char sum; for(i=1,sum=0;i<11;i++) {
sum+=i;
}
汇编代码为 :
C:0x0003
7F01
MOV
R7,#0x01
C:0x0005
E4
CLR
A
C:0x0006
FE
MOV
R6,A
C:0x0007
EF
MOV
A,R7
C:0x0008
2E
ADD
A,R6
C:0x0009
FE
MOV
R6,A
C:0x000A
0F
INC
R7
C:0x000B
BF0BF9 CJNE R7,#0x0B
,C:0007 代码长度 (字节):11,执行周期 (机器周期 ):63
程序 2:
unsigned char i; unsigned char sum; for(i=10,sum=0;i;i--) {
sum+=i;
} 汇编代码为 :
C:0x000F
7F0A
C:0x0011
E4
C:0x0012
FE
C:0x0013
EF
C:0x0014
2E
C:0x0015
FE
C:0x0016
DFFB
MOV
R7,#0x0A
CLR
A
MOV
R6,A
MOV
A,R7
ADD
A,R6
MOV
R6,A
DJNZ R7,C:0013
C51 优化设计之循环语句(上) 使用 DJNZ 循环指令提高执行效率
C51 优化设计之循环语句(上) 使用 DJNZ 循环指令提高执行效率
代码长度 (字节):9,执行周期 (机器周期 ):53
程序 3:
unsigned char i=11;
unsigned char sum=0; while(i--)
{
sum+=i;
} 汇编代码为 :
C:0x0003
7F0A
MOV
R7,#0x0B
C:0x0005
E4
CLR
A
C:0x0006
FE
MOV
R6,A
C:0x0007
AD07
MOV
R5,0x07
C:0x0009
1F
DEC
R7
C:0x000A
ED
MOV
A,R5
C:0x000B
6005
JZ
C:0012
C:0x000D
EF
MOV
A,R7
C:0x000E
2E
ADD
A,R6
C:0x000F
FE
MOV
R6,A
C:0x0010
80F5
SJMP
C:0007
代码长度