作者序
組合語言通常稱為低階程式語言,只有學過組合語言後才能了解如何控制整部電腦。使用高階程式語言,只能依編譯器所提供的功能來設計程式。組合語言雖然也須要組譯,但是限制較少,設計的彈性較大,很多程式都要自己動手做,因此成就感較大,當然付出的代價也較高。
組合語言給人的印象是艱深而難學,困難的原因有下列兩點:
1. 對電腦各部份的功能不了解。
2. 作業系統不直接提供輸入輸出函式,增加學習困難。
對於第一點困難,正是我們學習組合語言的目標,透過適當的範例實作與說明,這一點困難可以逐漸克服。對於第二點困難,目前 x64 平台提供 C 語言函式庫的介面,必須自己設計一個介面將 C 語言函式庫轉成組合語言的函式,組合語言程式才能直接呼叫。
那麼要如何才能克服困難而學好組合語言呢?
首先應以程式設計者的眼光來看待電腦,剛開始必須建立起來程式的執行環境,如何編寫程式,如何組譯程式,如何執行程式以取得答案,等等的環境,為了這個目的筆者選 NASM 組合語言,很容易就可以建立程式的執行環境,而且 NASM 是跨平台,可從下列網站免費下載:http://www.nasm.us/
接著要將組合語言當高階語言來學,筆者起意撰寫本書也是為了讓讀者實現將組合語言當高階程式語言來學的夢想,因此筆者將大多數常用的 C 語言輸入輸出函式轉成組合語言的巨集(MACRO),建成一個巨集檔(bin\nasm64io.mac),組合語言的程式可以直接呼叫該檔案裡的巨集,方便程式設計。
本書例題及習題程式很多,透過實作希望對您的學習有所幫助。授課教師請向出版商索取相關的教學電子檔案。
本書錯誤難免,敬請高明斧正,感激不盡。
林邦傑 謹識
2011/11/11
組合語言通常稱為低階程式語言,只有學過組合語言後才能了解如何控制整部電腦。使用高階程式語言,只能依編譯器所提供的功能來設計程式。組合語言雖然也須要組譯,但是限制較少,設計的彈性較大,很多程式都要自己動手做,因此成就感較大,當然付出的代價也較高。
組合語言給人的印象是艱深而難學,困難的原因有下列兩點:
1. 對電腦各部份的功能不了解。
2. 作業系統不直接提供輸入輸出函式,增加學習困難。
對於第一點困難,正是我們學習組合語言的目標,透過適當的範例實作與說明,這一點困難可以逐漸克服。對於第二點困難,目前...
目錄
Chapter 0本書導讀
在本章節中將引領進入本書,介紹有關本書的一切。
Chapter 1 個人電腦基本功能
寫組合語言的程式必須俱備有關電腦硬體以及指令的知識。本章說明電腦的基本功能。
Chapter 2 NASM組合語言基礎
NASM是一種跨平台的程式語言,只要合乎x86、x86-64、x64 架構的處理器所組成的電腦均適用,它也是一種可攜性高且具模組性的一種組合語言。
Chapter 3 一般指令
本章說明一些一般性的組合語言指令,包括暫存器間資料的拷貝,暫存器與記憶體間資料的傳遞,以及暫存器與堆疊間資料的搬移。
Chapter 4 Win 64呼叫慣例
從Win32 到Win64 有兩項重要的修改,就是六十四位元的定址功能,以及供一般用途使用的十六個六十四位元暫存器的一般設定。
Chapter 5 程式流程控制
程式流程控制是指控制程式中指令執行的順序。依序執行、選擇執行以及重複執行等三種指令是結構化程式設計的三種基本結構。本章主要說明這三種結構及其用法。
Chapter 6 算術運算
在本章您除了會了解整數的加減乘除算術四則計算外,您還會看到有關浮點數的處理。
Chapter 7 程序
程序可以說是一小段的獨立程式,這裡所說的獨立是指邏輯上的獨立,因為是一小段程式所以也稱為函式、常式、副常式、或副程式等,不一而足,其實都表示同一個意思。
Chapter 8 字串處理
x64 處理器提供指令讓您處理字串,並提供一些對字串基本操作的重要指令。
Chapter 9 位元運算
電腦記憶體的最小單元為位元,經常需要更改資料中的某一位元。所以了解位元運算可以說是基本的需要了。
Chapter 10檔案
檔案有許多特點,有檔名、必須開啟、有時需要關閉、可以讀取、可以寫入、也可以附加等等。
Chapter 11 資料結構
陣列與結構均屬於靜態結構,串列、佇列、堆疊等結構則屬於動態的。在組合語言裡並沒有提供陣列及結構的機制,不過我們可以試著來建立這種結構。
Chapter 12 浮點數運算
本章對於x87 數值型共同處理器的要點作一個簡單的介紹,包括浮點堆疊、狀態字組、控制字組、標籤字組、以及浮點指令的運算。
Chapter 13 Win32 與Win64 呼叫慣例之比較
本章是針對Win32 API 及Win64 ABI 呼叫微軟VC++ 語言函式慣例的比較。
Chapter 0本書導讀
在本章節中將引領進入本書,介紹有關本書的一切。
Chapter 1 個人電腦基本功能
寫組合語言的程式必須俱備有關電腦硬體以及指令的知識。本章說明電腦的基本功能。
Chapter 2 NASM組合語言基礎
NASM是一種跨平台的程式語言,只要合乎x86、x86-64、x64 架構的處理器所組成的電腦均適用,它也是一種可攜性高且具模組性的一種組合語言。
Chapter 3 一般指令
本章說明一些一般性的組合語言指令,包括暫存器間資料的拷貝,暫存器與記憶體間資料的傳遞,以及暫存器與堆疊間資料的搬移。
Chapter 4 Win 64呼叫慣...
購物須知
關於二手書說明:
商品建檔資料為新書及二手書共用,因是二手商品,實際狀況可能已與建檔資料有差異,購買二手書時,請務必檢視商品書況、備註說明及書況影片,收到商品將以書況影片內呈現為準。若有差異時僅可提供退貨處理,無法換貨或再補寄。
商品版權法律說明:
TAAZE 單純提供網路二手書託售平台予消費者,並不涉入書本作者與原出版商間之任何糾紛;敬請各界鑒察。
退換貨說明:
二手書籍商品享有10天的商品猶豫期(含例假日)。若您欲辦理退貨,請於取得該商品10日內寄回。
二手影音商品(例如CD、DVD等),恕不提供10天猶豫期退貨。
二手商品無法提供換貨服務,僅能辦理退貨。如須退貨,請保持該商品及其附件的完整性(包含書籍封底之TAAZE物流條碼)。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱
退換貨原則、
二手CD、DVD退換貨說明。