當前位置:學問君>學習教育>畢業論文>

循環結構的程序設計方法(一)

學問君 人氣:1.01W

實驗報告撰寫要求
 實驗操作是理論聯繫實際的重要環節,實驗報告必須在科學實驗的基礎上進行,實驗報告的撰寫是知識系統化的吸收和昇華的過程,實驗報告應該體現完整性、規範性、正確性、有效性。現將撰寫實驗報告的有關內容說明如下:
 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
&

TAGS:程序設計