實驗中,我們先撰寫並測試對應於各個功能方塊的函式,最後再撰寫主程式呼叫各個功能方塊函式組合成最終的計算機系統。
改寫及測試(鍵盤讀取,及顯示器)驅動函式:
參考先前單元的鍵盤讀取函式,將永久變數包裝為結構體實體,並修改函式的傳參,共同組成功能方塊。
撰寫測試(鍵號解譯)模組函式:
鍵號解譯之目的在於解譯新鍵入值,找出其特性並輸出做為後續模組之控制訊息及輸入資料。
• 建立函式,輸出入變數及結構體形態及實體
結構體:鍵盤對應向量表,內容為對應該鍵號的 ASCII 碼。
傳值傳參:輸入鍵號。
傳址傳參(輸出用):結構體實體位址,整數,運算子,符號/數值旗標, 等號/四則旗標等函式輸出值存放變數位置。
• 參考以下流程撰寫程式:
查詢鍵盤對應向量表,找到 ASCII 碼
比對 ASCII 碼之區段,判別此碼之性質
若 此碼為數值,則
將之轉化為整數格式並存入輸出整數變數位置;
設定符號/數值旗標為數值;
若 此碼為×÷+-四則運算子,則
設定運算控制暫存器為相應編號;
設定符號/數值旗標為符號;
設定等號/四則旗標為四則;
若 此碼為等號,則
設定符號/數值旗標為符號;
設定等號/四則旗標為等號;
• 測試時,撰寫主程式於輪詢廻路內以 printf()提示使用者提供鍵號,以scanf()取得 PC 終端輸入測試鍵號,再以鍵號為參數呼叫鍵號解譯模組函式處理鍵號並傳回處理結果,最後以 printf() 回送處理結果,輸入連代表無鍵入的 0,共 17 個不同的鍵號,觀查其處理結果。
撰寫測試(累加進位)器函式:
累加進位器之目的在於按輸入鍵的性質,判斷並將前後輸入之十進制單一位元輸入累進合成為一般電腦內可以處理的二進制整數值。
• 建立函式,輸出入變數及結構體內部永久變數
結構體內部永久變數:累進暫存器 傳值傳參:整數,符號/數值旗標。 傳址傳參(輸出用):累進值存放變數位址
• 參考以下流程撰寫程式:
查看比對符號/數值旗標,判別旗標
若 符號/數值旗標為數值,則
累進暫存器=累進暫存器×10+新輸入整數;
累進值=累進暫存器;
若 符號/數值旗標為符號,則
累進值=累進暫存器;
累進暫存器=0;
• 測試時,修改前一測試程式,撰寫主程式於輪詢廻路內以 printf()提示使用者提供鍵號,以 scanf()取得 PC 終端輸入測試鍵號,再以鍵號為參數呼叫鍵號解譯模組函式處理鍵號並傳回處理結果,再以其結果呼叫累加進位器模組函式,最後以 printf() 回送累進值,連續輸入數字,再輸入符號,觀察傳回之累進值是否進續累進直到輸入符號後變回 0。