网学网为广大网友收集整理了,循环结构的程序设计方法(一),希望对大家有所帮助!
实验报告撰写要求
实验操作是理论联系实际的重要环节,实验报告必须在科学实验的基础上进行,实验报告的撰写是知识系统化的吸收和升华的过程,实验报告应该体现完整性、规范性、正确性、有效性。现将撰写实验报告的有关内容说明如下:
1.实验名称
2.实验目的
本次实验所涉及并要求掌握的知识点。
3.实验内容与实验步骤
实验内容、原理、原理图分析及具体实验步骤。
4.实验环境
实验所使用的器件、仪器设备名称及规格。
5.设计实验数据表格
6.实验过程与分析
详细记录在实验过程中发生的故障和问题,并进行故障分析,说明故障排除的过程及方法。
根据具体实验,记录、整理相应数据表格、绘制曲线、波形图等,并进行误差分析。
7.实验结果总结
对实验结果进行分析,完成思考题目,总结实验的心得体会,并提出实验的改进意见。
注:1.前5项必须在做实验之前完成,并由指导教师签字后才能做实验。
2.对于学生自拟实验题目、参与科研、创新实验等形式实验项目的实验报告可采用论文、实验总结报告等形式完成。
3.此封皮标准页面为16K
实验名称:
循环结构的程序设计方法
实验目的:
1.掌握循环结构的程序设计方法;
2.通过循环结构的程序设计,加深理解程序设计的步骤,掌握较复杂应用的设计方法。
实验环境:
PC计算机 MPLAB编程环境
实验原理 :
实验一:编程实现两个16位二进制数的乘法运算(用部分积右移的方法)
本实验通过运用部分积右移法进行两个十六位数的乘法运算。
部分积右移:首先,将两个待乘数据放入寄存器A和B。然后将乘数B所在的寄存器按位右移,使最后一位移入状态寄存器的进位标志位。接下来,判断进位标志位是否为1,如果为1,那么将被乘数与结果相加(初始值为零),并将结果右移一位,为下一次相加做准备;反之,如果进位标志是0,那么,部分积不与任何值相加,但是仍然要向右移动一位,为下面的加法做准备。这样,利用循环程序,共循环16次,使乘数所有位都进入过状态寄存器标志位,这样,就将结果值进行了16次右移,并在特定的位置加上了原数据,得到了最后的结果,结果由于是32位的,所以放入两个寄存器所组成的单元之中,在本实验里,放入了C和D寄存器。
实验二:(选作)编程实现两个16位二进制数的乘法运算(用被乘数左移的方法)
本实验通过运用被乘数左移法进行两个十六位数的乘法运算。
被乘数左移:首先,将两个待乘数据放入寄存器AB和C。由于在运算过程中需要移动被乘数AB共16次,AB本身又是一个16位的数据,那么,AB应该有四个寄存器组成,即AB为一个32位的寄存器(由AH AL BH BL构成,其中,B存放高八位,A存放低八位)。然后将乘数B所在的寄存器按位右移,使最后一位移入状态寄存器的进位标志位。接下来,判断进位标志位是否为1,如果为1,那么将被乘数与结果相加(初始值为零),并将被乘数左移一位,为下一次相加做准备;反之,如果进位标志是0,那么,被乘数不与结果值相加,但是仍然要向左移动一位,为下面的加法做准备。这样,利用循环程序,共循环16次,使乘数所有位都进入过状态寄存器标志位,这样,就将被乘数进行了16次左移,并在特定的位置加到了结果值数据上,得到了最后的结果,结果由于是32位的,所以放入两个寄存器所组成的单元之中,在本实验里,放入了D(低八位)和E(高八位)寄存器。
但是,不论应用那种方法,都有不足之处,那就是,如果计算的数值结果超过了32位,也就是在进行最后一次加法运算时,产生了溢出,那么,结果将产生错误。也就是说,这两个程序都不可能完成所有16位的数据的乘法运算。
实验程序:
实验一:
AL EQU 10
AH EQU 11
BL EQU 12
BH EQU 13
CL EQU 14
CH EQU 15
DL EQU 16
DH EQU 17
COUNTER EQU 18
STATU EQU 3
CARRY EQU 0
ORG 1FFH
GOTO MAIN
ORG 0H
MULT RRF BH
RRF BL
BTFSC STATU,CARRY
CALL ADD
RRF CH
RRF CL
RRF DH
RRF DL
DECFSZ COUNTER
GOTO MULT
RETLW 0
ADD MOVF AL,0
ADDWF CL
BTFSC STATU,CARRY
INCF CH
MOVF AH,0
ADDWF CH
RETLW 0
SETU MOVLW 13H
MOVWF AL
&