Transcript 基本電學
Assembly Language 陳建宏 教授 E-mail: [email protected] WWW: http://www.chu.edu.tw/~jameschen/ 課程網頁: http://www.chu.edu.tw/~jameschen/courses/98/AL/ 簡介 課程目標 教材 課程大綱 評分方式 我們預期你… 課程目標 了解組合語言的基本概念與用法,俾能進一部 研習資工系進階課程 組合語言 微處理機系統 計算機結構 數位系統 系統程式 嵌入式系統 教材 Assembly Language for Intel-Based Computers (5th Edition) by Kip R. Irvine Prentice-Hall Inc. ISBN: 0-13-204848-5 台灣代理: 全華科技 http://www.prenhall.com/irvine/ 教材主頁 http://kipirvine.com/asm/ 教材下載網址 授課大綱 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Basic Concepts IA-32 Processor Architecture Assembly Language Fundamentals Data Transfers, Addressing, and Arithmetic Procedures Conditional Processing Integer Arithmetic Advanced Procedures Strings and Arrays Structures and Macros 評分方式 成績 Midterm Exam x2 (期中紙筆考) 30%, Final Exam (期末上機考) 30%, Assignments (課後作業) 30%, In-class assignments (隨堂表現) 10% 沒交作業、錯過小考或是測驗都視作零分。只有在 有醫生證明的病假時才能不參加測驗。如果可能的 話,請假最好在考試前就辦好手續。 助教時間:未定 (自由參加, 有到請簽名) 2 次 期中考, 1次期末上機考 點名3次不到 – 當掉 組合語言開發環境 Microsoft Macro Assembler 8.0 (MASM) Package (x86) MASM 是 Microsoft Macro Assembler 的縮寫,它 是 微軟 為 x86 微處理器家族,所寫的一套巨集組譯 器。它最初是用來發展在 MS-DOS 上面執行的軟體, 同時,它也該系統最流行的組譯器。 它支援的巨集很靈巧,既廣泛又多樣性,結構化程式 的慣用語法,包含高階架構式的迴圈、程序呼叫,以 及輪替 (alternation)(因此,MASM 算是高階組譯 器的一個範本). 起源與競爭 在 1990 年代初期,不管如何,有一些可供選擇的組譯器,像是 Borland TASM、共享版的 A86,以及(在 90 年代末期)NASM, 都開始取得 MASM 的一些市場份量。但是在 1990 年代終,有兩 種因素,使得 MASM 保住大部分的市場份量: 一是,微軟停止把 MASM 作為商業產品一樣的出售,並開始當成 免費散佈的 DDK(驅動器發展套件)之一部分;其次,MASM32 開發包、Iczelion's Win32 教材的出現,讓視窗應用程式的設計, 更方便使用 MASM. 後來在 2000 年,MASM 6.15 的發行,一樣是 Visual C++ Processor Pack 的一部份,費用全免。結果,在 Visual C++ 6.0 後來的所有版本,所包含的 MASM 之版本,都相等該 Visual C++ 的版本。後來在 Visual C++ 2005,64 位元版的 MASM 出現了 (檔名為 ml64.exe)。加上有龐大數量已安裝 MASM 的用戶群 基礎,這些因素,使得MASM仍能繼續生存而不被淘汰。 支援 MASM 的專案 有許多正在進行的軟體開發專案,都有支援到 MASM,其中包括 IDE(如 WinAsm Studio,RadASM)、除錯器(像是 OllyDbg), 以及 反組譯器(如 IDAPro, Interactive Disassembler) 這個 MASM32 的專案(http://www.movsd.com/)為了 MASM 使 用者的方便,它把許多非常令人感動的程式師所寫的程式庫 (library)、程式範例 (sample code) 寶庫,以及令人感動的說明文 件,全都集合在一起。也有很多網上論壇,有在支援 MASM(包 括 http://www.masmforum.com). 這些也都是沿習著著名的產品,如 Visual Basic、Visual C++、 EasyCode 的 IDE 一樣,為 MASM 提供 視覺化 (visual) 的能力。 雖然這個產品上了年紀,但它仍然是最受各方支援的組譯器。 MASM 的版本 雖然 MASM 不再是商業產品,但微軟乃繼續支援著它,因為在微 軟的廠內,還是存在著大量以組語為基礎的程式碼。 以單獨包裝販賣的 MASM,最後版本的是 6.11. 自從微軟停止對 MASM 分開銷售後,至今他們也更新了幾次的 MASM 6.x 版。 6.15 版是放在 Visual C++ 6.0 Processor Pack 中。 7.0 版是放在 Visual C++ .NET 2002。 7.1 版是放在 Visual C++ .NET 2003。 8.0 版是放在 Visual C++ .NET 2005,它也可以組譯 x64 的程式 碼。 在這些新版 Visual C++ 的 bin 目錄中,都可以看見 ml.exe,但在 Visual C++ .NET 2005 的同樣目錄中,可以看見 ml64.exe,它可 以組譯 x64 的程式碼。它的說明文件,也都是這些新版本的 Visual C++ 之說明文件的一部份。 有一些新版本的 MASM,也會放在微軟的 SDK 和 DDK 中。 操作環境 完整安裝說明: http://kipirvine.com/asm/gettingStarted/index.htm 視窗方式: Visual C++ NET 已經內建 簡易版本安裝方式: 需先安裝Visual C++ 2005 (2008) Express Edition (FREE) 下載 MASM 8.0 http://www.microsoft.com/downloads/details.aspx?displa ylang=zh-tw&FamilyID=7a1c9da0-0510-44a2-b0427ef370530c64 不需先安裝Visual C++ Express Edition 的方式 直接取用MASM 8.0的功能 以WinZip(WinRAR)亦可解壓縮下載自微軟網站的MASMsetup.EXE, 可得setup.exe。 再以WinZip解壓縮步驟1所得的setup.exe,可得vc_masm.msi和 vc_masm1.cab兩檔。 再以WinZip解壓縮步驟2所得的vc_masm1.cab,可得名稱既長又怪的檔 案FL_ml_exe_____X86.3643236F_FC70_11D3_A536_0090278A1BB8。 這個名稱既長又怪的檔案其實就是ml.exe。將 FL_ml_exe_____X86.3643236F_FC70_11D3_A536_0090278A1BB8更 名成ml.exe即可。 我們預期你… 共同參與 考試 有2次考試(都是在範圍內) (請參閱課程大綱),考試目的是 測驗你的觀念而不是背誦。 作業 出席講課及複習課是必須的。在這裡你可以了解觀念、你可 以和助教或同學們一起討論、你也可以提出任何的問題。 這裡的問題集可以幫助你了解觀念,解題方法、激勵更多的 思考。試著作所有題目並對照答案,並且試著參照你為何有 所不能。 這會是一門有趣的課,期待能和你們一同努力,將會 獲益良多。