分支程序设计实验报告.docx
- 文档编号:9343729
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:19
- 大小:84.78KB
分支程序设计实验报告.docx
《分支程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《分支程序设计实验报告.docx(19页珍藏版)》请在冰点文库上搜索。
分支程序设计实验报告
3.3汇编语言程序设计实验
实验六分支程序设计
设变量X存放于R0,函数值Y存放在R1,其中X、Y均为二进制数。
试按照下式的要求给Y赋值:
Y=
1
X>0
0
X=0
-1
X<0
程序框图如图3-5所示:
:
四、思考题
1.CJNE指令对CY有影响吗?
用CJNE和JC/JNC指令配合应注意什么?
在用JMP指令前,若变址255怎么办?
答:
有影响,若目的字节大于或等于源字节,Cy清0;若目的字节小于源字节,Cy置1。
用CJNE和JC/JNC指令配合应注意选取好正确的direct或#data值以便确定Cy的值。
变址>255,需要修改DPTR的高八位的值:
MOVDPTR,#TAB1
MOVA,R2
MOVB,#3;长转移ORMOVB,#2绝对转移
MULAB
XCHA,B
ADDA,DPH
MOVDPH,A
JMP@A+DPTR
2.用什么指令可以实现多分支之间的隔离?
答:
无条件转移指令、条件转移指令,包括JMP、CJNE、DJNZ、JZ、JNZ、JC、JNC、JB、JNB等
六、参考程序清单
1、二分支的条件转移程序
1)用二分支结构程序实现:
ORG0000H
MOVA,R0
JZLOAD
JNBACC.7,GO
MOVA,#0FFH
SJMPLOAD
GO:
MOVA,#01H
LOAD:
MOVR1,A
SJMP$
END
(1)(R0)=01HX>0
MOVA,R0
(A)=(D:
0XE0)=01H
GO:
MOVA,#01H
(A)=(D:
0XE0)=01H
LOAD:
MOVR1,A
(R1)=(D:
0X01)=01H
结果分析:
(R1)=(D:
0X01)=01H,Y=1
(2)(R0)=00HX=0
MOVA,R0
(A)=(D:
0XE0)=00H
LOAD:
MOVR1,A
(R1)=(D:
0X01)=00H
结果分析:
(R1)=(D:
0X01)=00H,Y=0
(3)(R0)=0FFHX<0
MOVA,R0
(A)=(D:
0XE0)=0FFH
MOVA,#0FFH
(A)=(D:
0XE0)=0FFH
LOAD:
MOVR1,A
(R1)=(D:
0X01)=0FFH
结果分析:
(R1)=(D:
0X01)=0FFH,Y=-1
2)用三分支结构程序实现:
ORG0000H
MOVA,R0
JNZCOMP;不等于零转COMP
MOVR1,#00H;等于零,则0(R1)
SJMPMP3
COMP:
CJNER0,#80H,MP1;(R0)中数与80H比较,不相等则转移到MP1
MOVR1,#0FFH;若比较相等,则-1(R1)
LJMPMP3
MP1:
JCMP2;两数不相等,(R0)>0转MP2
MOVR1,#0FFH;(R0)<0,-1(R1)
LJMPMP3
MP2:
MOVR1,#01H;(R0)>0,1(R1)
MP3:
SJMP$
END
(1)(R0)=02HX>0
MOVA,R0
(A)=(D:
0XE0)=02H
COMP:
CJNER0,#80H,MP1
Cy=1
MP2:
MOVR1,#01H
(R1)=(D:
0X01)=01H
结果分析:
(R1)=(D:
0X01)=01H,Y=1
(2)(R0)=00HX=0
MOVA,R0
(A)=(D:
0XE0)=00H
MOVR1,#00H
(R1)=(D:
0X01)=00H
SJMPMP3
结果分析:
(R1)=(D:
0X01)=00H,Y=0
(3)(R0)=98HX<0
MOVA,R0
(A)=(D:
0XE0)=98H
COMP:
CJNER0,#80H,MP1
Cy=0
MOVR1,#0FFH
(R1)=(D:
0X01)=0FFH
LJMPMP3
结果分析:
(R1)=(D:
0X01)=0FFH,Y=-1
实验七循环程序设计
五、思考题
1.程序中循环时间由什么来控制?
答:
程序中循环时间为程序中各指令执行时间的总合,由各指令执行时间和循环次数共同决定。
2.若用DJNZ或CJNE指令来控制循环,编写程序有什么不同?
答:
DJNZ是通过判断目的字节减1后是否为0来控制转移;CJNE是通过比较目的字节与源字节的相对大小来控制转移。
六、
参考流程图
七、循环结构程序参考清单:
a)三个字节右移四位:
程序流程图如图3-6所示:
参考程序清单:
ORG0000H
MOVR7,#4
RR30:
MOVR6,#3
CLRC
MOVR0,#30H
RR31:
MOVA,@R0
RRCA
MOV@R0,A
INCR0
DJNZR6,RR31
DJNZR7,RR30
SJMP$
END
以(D:
0X30)=48H,(D:
0X31)=A7H,(D:
0X32)=0BH为例进行实验
第一次右移:
MOVR7,#4
(R7)=(D:
0X07)=04H
RR30:
MOVR6,#3
(R6)=(D:
0X06)=03H
CLRC
Cy=0
MOVR0,#30H
(R0)=(D:
0X00)=30H
RR31:
MOVA,@R0
(A)=(D:
0XE0)=48H
(A)=(D:
0XE0)=A7H
(A)=(D:
0XE0)=0BH
RRCA
(A)=(D:
0XE0)=24H
Cy=0
(A)=(D:
0XE0)=53H
Cy=1
(A)=(D:
0XE0)=85H
Cy=1
MOV@R0,A
(D:
0X30)=24H
(D:
0X31)=53H
(D:
0X32)=85H
INCR0
(R0)=(D:
0X00)=31H
(R0)=(D:
0X00)=32H
(R0)=(D:
0X00)=33H
(R6)=(D:
0X06)=00H
(R7)=(D:
0X07)=03H
第二次右移:
RR30:
MOVR6,#3
(R6)=(D:
0X06)=03H
CLRC
Cy=0
MOVR0,#30H
(R0)=(D:
0X00)=30H
RR31:
MOVA,@R0
(A)=(D:
0XE0)=24H
(A)=(D:
0XE0)=53H
(A)=(D:
0XE0)=85H
RRCA
(A)=(D:
0XE0)=12H
Cy=0
(A)=(D:
0XE0)=29H
Cy=1
(A)=(D:
0XE0)=C2H
Cy=1
MOV@R0,A
(D:
0X30)=12H
(D:
0X31)=29H
(D:
0X32)=C2H
INCR0
(R0)=(D:
0X00)=31H
(R0)=(D:
0X00)=32H
(R0)=(D:
0X00)=33H
(R6)=(D:
0X06)=00H
(R7)=(D:
0X07)=02H
第三次右移:
RR30:
MOVR6,#3
(R6)=(D:
0X06)=03H
CLRC
Cy=0
MOVR0,#30H
(R0)=(D:
0X00)=30H
RR31:
MOVA,@R0
(A)=(D:
0XE0)=12H
(A)=(D:
0XE0)=29H
(A)=(D:
0XE0)=C2H
RRCA
(A)=(D:
0XE0)=09H
Cy=0
(A)=(D:
0XE0)=14H
Cy=1
(A)=(D:
0XE0)=E1H
Cy=0
MOV@R0,A
(D:
0X30)=09H
(D:
0X31)=14H
(D:
0X32)=E1H
INCR0
(R0)=(D:
0X00)=31H
(R0)=(D:
0X00)=32H
(R0)=(D:
0X00)=33H
(R6)=(D:
0X06)=00H
(R7)=(D:
0X07)=01H
第四次右移:
RR30:
MOVR6,#3
(R6)=(D:
0X06)=03H
CLRC
Cy=0
MOVR0,#30H
(R0)=(D:
0X00)=30H
RR31:
MOVA,@R0
(A)=(D:
0XE0)=09H
(A)=(D:
0XE0)=14H
(A)=(D:
0XE0)=E1H
RRCA
(A)=(D:
0XE0)=04H
Cy=1
(A)=(D:
0XE0)=8AH
Cy=0
(A)=(D:
0XE0)=70H
Cy=1
MOV@R0,A
(D:
0X30)=04H
(D:
0X31)=8AH
(D:
0X32)=70H
INCR0
(R0)=(D:
0X00)=31H
(R0)=(D:
0X00)=32H
(R0)=(D:
0X00)=33H
(R6)=(D:
0X06)=00H
(R7)=(D:
0X07)=00H
结果分析:
(D:
0X30)=48H=01001000B,(D:
0X31)=A7H=10100111B,(D:
0X32)=0BH=00001011B
右移四位后(D:
0X30)=04H=00000100B,(D:
0X31)=8AH=10001010B,(D:
0X32)=70H=01110000B
2.冒泡法排序:
排序程序流程图如图3-7所示:
排序参考程序清单:
ORG0000H
MOVP2,#36H
MOVR0,#00H
MOVDPTR,#1000H
MOVR1,#0AH
L:
MOVCA,@A+DPTR
MOVX@R0,A
INCDPTR
INCR0
CLRA
DJNZR1,L步次:
MOVPSW,#00H02
MOVP2,#36H03
MOVR2,#10-104
LOOP0:
MOVR0,#00H05
MOVR1,#01H06
MOV03H,R207
CLR7FH08
LOOP1:
MOVXA,@R009
MOV30H,A10
MOVXA,@R111
CJNEA,30H,LOOP212
SJMPL113
LOOP2:
JCL114
MOVX@R0,A15
XCHA,30H16
MOVX@R1,A17
SETB7FH18
L1:
INCR019
INCR120
DJNZR3,LOOP121
JNB7FH,LOOP322
DJNZR2,LOOP023
LOOP3:
SJMP$24
ORG1000H
DB47H,28H,39H,12H,71H,54H,06H,63H,26H,37H
END
3600H----3609H设为47H,28H,39H,12H,71H,54H,06H,63H,26H,37H进行实验:
第一轮比较9次:
第二轮比较8次:
第三轮比较7次:
第四轮比较6次:
第五轮比较5次:
第六轮比较4次:
第七轮比较3次:
结果分析:
第七轮运行到第23步,BIT7FH的内容分为00H,说明已排好序,之后运行结束。
此时外部RAM3600H-----3609H的内容依次为71H、63H、54H、47H、39H、37H、28H、26H、12H、06H。
思考题:
如何将排序程序修改为只用一个指针?
答:
ORG0000H
MOVR0,#10-1
L:
MOVDPTR,#3600H
CLR7FH
MOVR1,00H
L1:
MOVXA,@DPTR
MOV30H,A
INCDPTR
MOVXA,@DPTR
CJNEA,30H,L3
JNCL2
L3:
JCL2
XCHA,30H
MOVX@DPTR,A
MOVA,30H
DECDPL
MOVX@DPTR,A
SETB7FH
INCDPTR
L2:
DJNZR1,L1
JNB7FH,L4
DJNZR0,L
L4:
SJMP$
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分支 程序设计 实验 报告