- 相關(guān)推薦
循環(huán)結(jié)構(gòu)的程序設(shè)計方法(一)
實驗報告撰寫要求
實驗操作是理論聯(lián)系實際的重要環(huán)節(jié),實驗報告必須在科學實驗的基礎(chǔ)上進行,實驗報告的撰寫是知識系統(tǒng)化的吸收和升華的過程,實驗報告應(yīng)該體現(xiàn)完整性、規(guī)范性、正確性、有效性,F(xiàn)將撰寫實驗報告的有關(guān)內(nèi)容說明如下:
1.實驗名稱
2.實驗?zāi)康?br />
本次實驗所涉及并要求掌握的知識點。
3.實驗內(nèi)容與實驗步驟
實驗內(nèi)容、原理、原理圖分析及具體實驗步驟。
4.實驗環(huán)境
實驗所使用的器件、儀器設(shè)備名稱及規(guī)格。
5.設(shè)計實驗數(shù)據(jù)表格
6.實驗過程與分析
詳細記錄在實驗過程中發(fā)生的故障和問題,并進行故障分析,說明故障排除的過程及方法。
根據(jù)具體實驗,記錄、整理相應(yīng)數(shù)據(jù)表格、繪制曲線、波形圖等,并進行誤差分析。
7.實驗結(jié)果總結(jié)
對實驗結(jié)果進行分析,完成思考題目,總結(jié)實驗的心得體會,并提出實驗的改進意見。
注:1.前5項必須在做實驗之前完成,并由指導教師簽字后才能做實驗。
2.對于學生自擬實驗題目、參與科研、創(chuàng)新實驗等形式實驗項目的實驗報告可采用論文、實驗總結(jié)報告等形式完成。
3.此封皮標準頁面為16K
實驗名稱:
循環(huán)結(jié)構(gòu)的程序設(shè)計方法
實驗?zāi)康模?br />
1.掌握循環(huán)結(jié)構(gòu)的程序設(shè)計方法;
2.通過循環(huán)結(jié)構(gòu)的程序設(shè)計,加深理解程序設(shè)計的步驟,掌握較復雜應(yīng)用的設(shè)計方法。
實驗環(huán)境:
PC計算機 MPLAB編程環(huán)境
實驗原理 :
實驗一:編程實現(xiàn)兩個16位二進制數(shù)的乘法運算(用部分積右移的方法)
本實驗通過運用部分積右移法進行兩個十六位數(shù)的乘法運算。
部分積右移:首先,將兩個待乘數(shù)據(jù)放入寄存器A和B。然后將乘數(shù)B所在的寄存器按位右移,使最后一位移入狀態(tài)寄存器的進位標志位。接下來,判斷進位標志位是否為1,如果為1,那么將被乘數(shù)與結(jié)果相加(初始值為零),并將結(jié)果右移一位,為下一次相加做準備;反之,如果進位標志是0,那么,部分積不與任何值相加,但是仍然要向右移動一位,為下面的加法做準備。這樣,利用循環(huán)程序,共循環(huán)16次,使乘數(shù)所有位都進入過狀態(tài)寄存器標志位,這樣,就將結(jié)果值進行了16次右移,并在特定的位置加上了原數(shù)據(jù),得到了最后的結(jié)果,結(jié)果由于是32位的,所以放入兩個寄存器所組成的單元之中,在本實驗里,放入了C和D寄存器。
實驗二:(選作)編程實現(xiàn)兩個16位二進制數(shù)的乘法運算(用被乘數(shù)左移的方法)
本實驗通過運用被乘數(shù)左移法進行兩個十六位數(shù)的乘法運算。
被乘數(shù)左移:首先,將兩個待乘數(shù)據(jù)放入寄存器AB和C。由于在運算過程中需要移動被乘數(shù)AB共16次,AB本身又是一個16位的數(shù)據(jù),那么,AB應(yīng)該有四個寄存器組成,即AB為一個32位的寄存器(由AH AL BH BL構(gòu)成,其中,B存放高八位,A存放低八位)。然后將乘數(shù)B所在的寄存器按位右移,使最后一位移入狀態(tài)寄存器的進位標志位。接下來,判斷進位標志位是否為1,如果為1,那么將被乘數(shù)與結(jié)果相加(初始值為零),并將被乘數(shù)左移一位,為下一次相加做準備;反之,如果進位標志是0,那么,被乘數(shù)不與結(jié)果值相加,但是仍然要向左移動一位,為下面的加法做準備。這樣,利用循環(huán)程序,共循環(huán)16次,使乘數(shù)所有位都進入過狀態(tài)寄存器標志位,這樣,就將被乘數(shù)進行了16次左移,并在特定的位置加到了結(jié)果值數(shù)據(jù)上,得到了最后的結(jié)果,結(jié)果由于是32位的,所以放入兩個寄存器所組成的單元之中,在本實驗里,放入了D(低八位)和E(高八位)寄存器。
但是,不論應(yīng)用那種方法,都有不足之處,那就是,如果計算的數(shù)值結(jié)果超過了32位,也就是在進行最后一次加法運算時,產(chǎn)生了溢出,那么,結(jié)果將產(chǎn)生錯誤。也就是說,這兩個程序都不可能完成所有16位的數(shù)據(jù)的乘法運算。
實驗程序:
實驗一:
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
MOVLW 2CH
MOVWF AH; 被乘數(shù)->A
MOVLW 7AH
MOVWF BL
MOVLW 18H
MOVWF BH; 乘數(shù)->B
MOVLW 10H
MOVWF COUNTER
CLRF DL
CLRF DH
RETLW 0
MAIN NOP
CALL SETU
CALL MULT
END
實驗二:
AL EQU 10
AH EQU 11
BL EQU 12
BH EQU 13
CL EQU 14
CH EQU 15
DL EQU 16
DH EQU 17
EL EQU 18
EH EQU 19
COUNTER EQU 1A
STATU EQU 3
CARRY EQU 0
ORG 1FFH
GOTO MAIN
ORG 0H
MULT RRF CH
RRF CL
BTFSC STATU,CARRY
CALL ADD
RLF AL
RLF AH
RLF BL
RLF BH
DECFSZ COUNTER
GOTO MULT
RETLW 0
ADD MOVF AL,0
ADDWF DL
BTFSC STATU,CARRY
INCF DH
MOVF AH,0
ADDWF DH
BTFSC STATU,CARRY
INCF EL
MOVF BL,0
ADDWF EL
BTFSC STATU,CARRY
INCF EH
MOVF BH,0
ADDWF EH
RETLW 0
SETU MOVLW 5DH
MOVWF AL
MOVLW 13H
MOVWF AH
MOVLW 2CH
MOVWF CL
MOVLW 07H
MOVWF CH
MOVLW 10H
MOVWF COUNTER
CLRF BL
CLRF BH
CLRF DL
CLRF DH
CLRF EL
CLRF EH
RETLW 0
MAIN NOP
CALL SETU
CALL MULT
END
調(diào)試結(jié)果:
實驗一
2C13*187A=436C90E
1、加載數(shù)據(jù)前的情況
2、賦值后的情況
2、乘法過程中,部分積右移的情況
3、結(jié)果
實驗二
135D*072C=8ADEFC
加載數(shù)據(jù)前的情況
賦值后的情況
乘法過程中,被乘數(shù)左移的情況
結(jié)果實驗分析與實驗體會:
通過本實驗的操作,我掌握了循環(huán)結(jié)構(gòu)的程序設(shè)計方法,加深理解程序設(shè)計的步驟,掌握較復雜應(yīng)用的設(shè)計方法。
在實驗中,通過實際動手編程操作,深入理解了部分積右移和被乘數(shù)左移兩種多位數(shù)乘法運算的算法,并掌握了其在PIC單片機上是如何編程實現(xiàn)的。通過使用MPLAB仿真,看到了各個寄存器在實驗過程中的變化,在理解程序的基礎(chǔ)上充分理解了整個程序進行的過程,并通過單步進行實際看到了循環(huán)結(jié)構(gòu)的進行順序。
整個實驗進行順利,使我受益匪淺。
【循環(huán)結(jié)構(gòu)的程序設(shè)計方法(一)】相關(guān)文章:
分枝結(jié)構(gòu)的程序設(shè)計 (一)03-07
淺談C語言中循環(huán)結(jié)構(gòu)的教學方法03-28
UNIX網(wǎng)絡(luò)的服務(wù)器程序設(shè)計方法03-20
物理與化學方法下循環(huán)水換熱器查漏分析的方法11-19
C語言程序設(shè)計 (一)12-26
企業(yè)資本結(jié)構(gòu)及其決策方法探析03-18
淺析最優(yōu)資本結(jié)構(gòu)的確定方法12-04