本書以Windows操作系統(tǒng)和Intel80x86/Pentium系列CPU為背景,全面系統(tǒng)地介紹了32位保護模式下的匯編語言程序設計,包括Windows編程環(huán)境、Intel80x86/Pentium指令系統(tǒng)、MASM的偽指令與操作符等知識,以及分支、循環(huán)、子程序、C/C++混合編程、上機調試過程等程序設計方法。本書的核心是Windows下的32位保護模式編程,摒棄了過時的16位DOS實模式編程環(huán)境,與當前的軟件開發(fā)和微機應用環(huán)境結合緊密。本書不但能幫助讀者順利地掌握匯編語言程序設計方法,而且能夠提高讀者的C/C++編程水平。書中的程序具有很強的實用性,強調C/C++和匯編語言的聯(lián)合編程能力,通過這些實例與其他課程相呼應,有利于各門課程之間的融會貫通。本書適合作為高等院校匯編語言程序設計相關課程的教材或教學輔導書,也可作為希望掌握Windows匯編程序設計的中高級程序開發(fā)人員的自學參考書。本書前言前言:匯編語言是執(zhí)行效率最高、功能最強的一種程序設計語言,它能夠直接控制計算機硬件,并最大限度地發(fā)揮硬件的能力。在對程序的執(zhí)行時間和占用空間要求很高的場合,必須使用匯編語言才能滿足要求。匯編語言還可以與高級語言進行混合編程,以發(fā)揮各自的優(yōu)勢。通過學習匯編語言,有助于理解操作系統(tǒng)和應用程序的運行原理,準確地分析程序錯誤。它也是掌握加密/解密技術、病毒蠕蟲機理、剖析關鍵代碼等高級技術的必備基礎?!秴R編語言程序設計》是一門程序設計課程,然而目前許多教材仍然基于DOS系統(tǒng)和8086/8088之上,與十幾年前的教材相比,僅僅增加了32位指令和保護模式的介紹,而核心內容仍然是DOS下的16位實模式編程。其中的BIOS/DOS功能調用、64KB內存分段結構、上機環(huán)境、16位C/匯編混合編程等已經嚴重落后于當前的應用環(huán)境,與國內外主流的軟件開發(fā)需求嚴重脫節(jié)。我們認為,隨著DOS逐步退出操作系統(tǒng)的歷史舞臺,這門課程的基礎知識和實踐環(huán)節(jié)必須與時俱進,需要從DOS下的16位實模式編程過渡到Windows下的32位保護模式編程。本書的編寫就是在這樣的背景下完成的。本書選擇了Windows操作系統(tǒng)和32位Pentium微機作為平臺,介紹匯編語言的基礎知識和應用,達到與當前軟件開發(fā)和應用環(huán)境緊密結合的目的。本書有以下幾個特點。(1)從DOS過渡到Windows。不再介紹過時的BIOS/DOS功能調用和DOS執(zhí)行環(huán)境,取而代之的是Windows的API和C庫函數,書中所有的例子都是在Windows保護模式環(huán)境下運行的32位程序。(2)實踐性強。將實踐環(huán)節(jié)提前,將100多條指令貫穿于全書,全部程序都能上機調試運行,使讀者能在實踐中掌握匯編語言程序設計并熟悉Pentium的指令系統(tǒng)。尤其是將VisualC/C++作為匯編的開發(fā)環(huán)境,極大地方便了匯編程序的編寫、調試和運行。將各種指令和偽操作等內容分解到全書中,逐步接觸并使用這些指令,會達到循序漸進的效果。(3)與C/C++緊密結合。C/C++語言是目前的主流開發(fā)語言,往往也是匯編語言的先修課程。書中的部分C/C++程序與匯編程序相對照,在匯編程序中也調用了C庫函數。這不但有利于對匯編語言的掌握,而且能夠提高C/C++程序的編程水平,理解和解決在C/C++程序開發(fā)過程中遇到的結構對齊、字節(jié)序、程序運行效率、堆棧溢出、內存覆蓋、系統(tǒng)崩潰、訪問違例等問題。C/C++和匯編語言聯(lián)合編程能夠應用于當前實際的軟件開發(fā)過程,具有很強的實踐指導性。(4)介紹了保護模式的運行機制。在介紹保護模式時,使用了大量的實例以幫助讀者更好地理解描述符、頁表、門、任務等復雜概念,其中還介紹了一個Windows內核驅動程序。通過對Pentium保護模式的學習,能夠更透徹地理解虛擬內存管理、進程環(huán)境等其他相關知識。(5)采用典型編程實例。在示例程序中采用了指針、數組、結構、鏈表等數據結構,以及冒泡排序、快速排序、折半查找、加密/解密等算法,既體現了匯編語言的編程特點,又具有很強的實用性。(6)知識全面。增加了MASM6.1版本的匯編高級語法等,并介紹了DLL、C庫函數、WindowsAPI等內容。(7)適合自學。對部分不能在課堂上講授的內容,可安排自學。在編寫過程中,采用循序漸進的敘述方法,配以大量的實例來幫助讀者對這些內容進行理解。書中的許多習題都是以例子程序為基礎的,可達到舉一反三的效果。Pentium指令系統(tǒng)中還包括浮點運算、MMX多媒體擴展、數據流SIMD擴展(SSE、SSE2)等部分,考慮到它們的使用范圍較窄,由于篇幅所限,本書沒有介紹這方面的內容,感興趣的讀者可以參考其他書籍。全書共分10章。第1,2,3章由張雪蘭教授編寫,其余各章由譚毓安副教授編寫。7.4節(jié)、7.5節(jié)、8.2節(jié)、8.5節(jié)及第10章屬于較高要求的內容,在教學時可以根據情況進行刪減。在本書的編寫過程中,不僅融合了作者多年來講授匯編語言程序設計課程的經驗,還請多位老師和同學閱讀了書稿,提出了改進意見,在此深表謝意。同時,本書還參考了國內外的眾多教材和資料,在此謹對這些教材和資料的原創(chuàng)者致謝。對書中的錯誤和不當之處,敬請廣大讀者批評指正。作者的電子郵箱是:victortan@yeah.net,歡迎通過電子郵件方式向本人索取本書的PowerPoint講稿和其他教學資料。編者