全球旧事资料 分类
实验七循环程序设计
1..三个字节右移四位:三个字节右移四位:(31h)31h。(32h)32h注:赋初值(30h)30h,),()。()ORG0000HMOVR7,4
RR30
MOVCLRMOV
R6,3CR0,30H
RR31
MOVRRC
A,R0A
MOVINC
R0,AR0
DJNZR6,RR31此处r6依此减1,完成三个单元内容依次右移一位结果如下:结果如下:
DJNZR7,RR30此处用于回到上述右移一位程序段,分别依此减一,r7一共四次,实现右移四位的目的此处用于回到上述右移一位程序段,分别依此减一,一共四次,实现右移四位的目的结果如下:结果如下:
右移第二次:右移第二次:
右移第三次:右移第三次:
右移第四次:右移第四次:SJMPEND
f1冒泡法排序:冒泡法排序:
ORGMOV
0000HPSW,00H
MOVMOVLOOP0:MOVMOV
P2,36HR2,101R0,00HR1,01H
MOV
03H,R2
CLRLOOP1:MOVX
7FHA,R0
MOVMOVXCJNESJMPLOOP2:JC
30H,AA,R1A,30H,LOOP2L1L1比较两数,不相等之后跳转的比较两数,不相等之后跳转的loop2之后
则顺序执行判断则顺序执行判断3601h)>(3600h))>(3600h出(3601h)>(3600h)并进行换位
MOVXXCH
R0,AA,30H
实现交换
MOVXSETB
R1,A7FH每进行一次交换7fh就置1
fL1:
INCINC
R0R1准备进行第准备进行第二第三个数的比较
DJNZR3,LOOP1LOOP1MOVXAR0
跳转至loop1
MOV30HAMOVXCJNELOOP2JCAR1A30HLOOP2L1跳转至loop2判断出(3601h)>(3602h))>(3602hL1,判断出(3601h)>(3602h)跳回L1,直接进行第三个数与第四个数的比较
同样的方式直到进行第一轮最后两个数的比较之后:L1INCR0
INC
R1顺序执行顺序执行
DJNZR3LOOP1JNBDJNZLOOP0MOVMOVMOVCLR7FH,LOOP3
R2,LOOP0跳转至loop0进行新一轮的比较R2用来记录比较的轮数,直到最后一轮r21时R000HR101H03HR27FH比较之前进行清零
LOOP1MOVXAR0MOV30HAMOVXAR1CJNEA30HLOOP2SJMPL1进行比较,两数不等,跳转至loop2进行比较,两数不等,
fLOOP2
JC
L1(3600h)>(3601h)跳转至L13600h)>(3601h))>(3601h
L1
INCINC
R0R1已是最后一轮没有交换,跳至loop3结束
DJNZR3LOOP1JNBLOOP3:7FHLOOP3SJMP
完成排序!完成排序!E
d五、思考题1.程序中循环时间由什么来控制?答:循环的时间由循环块内每一条命令的周期共同来确定。2.若用DJNZ或CJNE指令来控制循环,编写程序有什么不同?答:DJNZ命令是减1判别命令,需要在循环次数上加1来完成循环控制;CJNE不需要。
fr
好听全球资料 返回顶部