130 likes | 284 Views
IA32 CPU MASM615. 程式初體驗. 程式之組成. 程式樣式 輸出功能 簡易資料輸出 輸入功能 鍵盤輸入 算數處理基本程式碼 程式發展 過程 與 範例 Homework. 程式樣式. TITLE (b32. asm) ; This program 程式說明區 ; Last update: Include Irvine32.inc ; 使用之其他程式庫之定義檔於此加入 .data ; 使用之資料變數定義於此 .code main PROC ; 使用之主程式流程定義於此 exit ; 正常返回作業系統
E N D
IA32 CPUMASM615 程式初體驗
程式之組成 • 程式樣式 • 輸出功能簡易資料輸出 • 輸入功能鍵盤輸入 • 算數處理基本程式碼 • 程式發展過程與範例 • Homework
程式樣式 TITLE (b32.asm) ; This program程式說明區 ; Last update: Include Irvine32.inc ; 使用之其他程式庫之定義檔於此加入 .data ; 使用之資料變數定義於此 .code main PROC ; 使用之主程式流程定義於此 exit ; 正常返回作業系統 main ENDP ; 其他自己撰寫之副程式定義於此 END main TITLE (b16.asm) ; This program程式說明區 ; Last update: Include Irvine16.inc ;使用之其他程式庫之定義檔於此加入 .data ; 使用之資料變數定義於此 .code main PROC mov ax,@data mov ds,ax ; 使用之主程式流程定義於此 exit ; 正常返回作業系統 main ENDP ; 其他自己撰寫之副程式定義於此 END main • 基本之程式格局 • 16bit模式b16.asm • 32bit模式b32.asm
DOS INT 21H AH=9h輸出字串 AH=2輸出自元 Irvine32.inc or irvine16.inc WriteBin WriteChar WriteDec WriteHex WrintInt WrintString 簡易輸出 • 輸出方式基本有三種 • 使用BIOS或DOS(操作系統之函數) • 使用現有之程式庫 • 自己撰寫I/O之驅動程式 • 本課程以前兩種方式為主 因為使用現有之程式 因此需記住每一個程式 之使用規定 。
DOS INT 21H AH=1h輸入字元 Irvine32.inc or irvine16.inc ReadChar ReadHex ReadInt ReadString 鍵盤輸入 • 輸出方式基本有三種 • 使用BIOS或DOS(操作系統之函數) • 使用現有之程式庫 • 自己撰寫I/O之驅動程式 • 本課程以前兩種方式為主 因為使用現有之程式 因此需記住每一個程式 之使用規定
加減運算 .data buf_a sdword ? buf_b sdword ? result sdword ? .code ;buf_a+buf_beax mov eax, buf_a add eax, buf_b • 運算需弄清楚運算元為何、多少位元? • MASM所有運算指令皆只能有一記憶體型態之運算元,若需執行兩記憶體間運算,須先將其中一運算元先設定為暫存器AX~DX。 ;buf_a+10eax mov eax, buf_a add eax, 10 ;buf_a-buf_beax mov eax, buf_a sub eax, buf_b ;buf_a+buf_bresult mov eax, buf_a add eax, buf_b mov resuld,eax
實戰演練步驟: 一、程式功能分析 三(b)流程控制:判斷?或迴圈?或跳躍,代入現有之流程樣板程式段 二、將所需完成之功能分門別類, input、output、運算、流程判斷、資料處理、… 三(c)資料處理: 分析是基本運算(+-*/,and or)或進階運算(如:亂數, 尋找是否有可用之副程式) 三(a)輸出入: 分辨所要輸出入之格式(dec,Hex,char, string), 依屬性呼叫對應之副程式
實戰演練:過程 一、程式碼驗證是否可正確組譯執行。 重覆1、2、3至所有功能正確,合併整合驗算正確。 使用者使用與功能驗證。 二、程式功能是否可觀察,結果是否正確。 三、與其他功能何合併驗證、是否正確? 程式完成
答題步驟範例 • 依上張投影片實戰演練步驟,根據題目要求分析,並規劃程式(題目中之選項順序) 。 • 將所答之順序,先透過編輯程式與MAKE32組譯驗證,並執行確認無誤後,再填入答案順序,儲存。 • 待所有題目完成後提交。 • 因為是隨機出題,且題目繁多,請勿以測試方式否則無法完成(因為每此題目不同),也無法訓練你自己寫程式。 • 所有題目正確後才有權繳交本次作業(相關作業將累計為期末成績)。
Homework • 應用範例所述之技巧,設計一簡易計算器。功能如下: • 列印選擇訊息(0:結束,+:加法,-:減法) • 依所選擇功能執行,並輸出結果。 • Homework之輸出規格1 • Homework之輸出規格2 • 作業寫作建議
作業寫作建議 • 一、先完成課堂上之網路程式測驗。 • 二、設計作業之方案 • 方案一:應用home_s2.asm, home.inc,將home_s2.asm之???處填入適當之訊息與指令。 • 方案二:依網路程式測驗之經驗與作業輸出要求自行設計,執行流程可參考home_s2.asm