Intel匯編語言程序設計(第四版)本書全面細致地講述了匯編語言程序設計的各個方面。從微處理器體系結構、工作機制到指令集;從最基本的編譯器鏈接器的使用到高級過程、結構和宏的使用;從用純匯編編寫程序到用VC++,BC++等最新編譯器與匯編的混合接口編程;從16位實模式下BIOS,DOS實模式文本及圖形程序設計到32位保護模式的Windows程序設計;從磁盤基礎知識到Intel指令編碼、浮點運算等相關知識都做了深入而細致的講解。本書是佛羅里達國際大學等多所美國大學采用的計算機基礎教材,內容廣博,但又講解得非常深入,書中結合最令人感興趣的編程問題逐步引出匯編語言的解答,書后有編譯器的安裝使用以及常用的編程參考資料,隨書附帶的CD-ROM中配有較新的免費MASM6.11編譯器,為讀者掌握匯編語言掃清一切障礙,另配以豐富和頗具特色的習題集及解答,使讀者能夠快速掌握這門公認為很難的語言。如果讀者是匯編語言的初學者,本書則提供了最好的起點,如果讀者已經熟練掌握了這門語言,重讀本書,亦當有所收獲。本書對計算機體系結構及基本原理做了相當篇幅的介紹,因此本書不僅可作為高等院校計算機專業(yè)匯編語言的教材,也可以作為計算機體系結構和原理的參考資料。本書著重講述了如何在機器層次思考并解決程序設計的問題,具有以下特點:·詳細講述了數制系統(tǒng)和數據存儲的基礎知識·所有的例子程序都在Microsoft的MASM6.15編譯器下測試通過·講述了高級語言內嵌匯編代碼以及匯編語言程序同實地址模式及保護模式的C/C++程序的鏈接·附帶擴展的指令集手冊,其中包含了指令格式和CPU標志的使用·講述了中斷和量和設備I/O·隨書附帶的CD-ROM中包含了MicrosoftMASM6.15匯編編譯器、程序編輯器、一個宏庫和本書的源代碼第四版的新增內容:·Win32程序設計,包含控制臺API和圖形應用程序·對過程、遞歸、堆棧參數、結構和聯合進行了更多的介紹·布爾表達式、真值表和流程圖·基本的字符串處理、排序和查找算法·實地址模式和保護模式下的位映射圖形·IEEE浮點二進制表示法·虛擬機體系結構,IA-32保護模式分段和分頁·介紹指令執(zhí)行周期、內存、多任務、流水線和超標量體系結構·磁盤基礎知識,包括磁盤的物理結構、FAT32和NTFS文件的結構在廣大的學生和編程愛好者眼中,匯編語言一直被認為是最難學的語言之一,究其原因,主要是因為匯編程序員在著眼于程序邏輯實現的同時還要注重太多的其他細節(jié),這些在學習其他語言時可以不必涉及的細節(jié)包括上百條機器指令的用法。一大堆中斷的用法和很多與硬件相關的知識。但是很多的匯編書籍似乎并沒有考慮到讀者的難題,這些書籍往往根據內容而不是根據讀者的學習感受來設置章節(jié),數制原理、計算機的硬件結構。尋址、指令、宏的使用和中斷等內容都被分割在單獨的章節(jié)中講述,這樣,讀者就不得不在開始學習程序設計方法之前單獨學習這些內容,但不和實際應用相結合,這些內容的學習和死記硬背手冊無異,難度可想而知。作為作者,KipR.Irvine似乎很了解這一點,所以我們很高興地看到,本書內容的編排非常適合于學生們從一無所知開始學習匯編語言,作者做了很大的努力使章節(jié)之間循序漸進,銜接自然。所有的指令被自然分割在各章中講述,只有在學習的過程中真正用到某些指令的時候,才詳細介紹這些指令。尋址方法、宏的使用、中斷的使用等內容也是如此安排的,這樣當學生們集中精力學完了匯編語言和高級語言對應的內容后,卻驚奇地發(fā)現自己已經自然而然地過了指令學習等各種難關。在精心編排講述傳統(tǒng)的16位匯編語言知識的同時,作者也沒有忘記在內容的深度和廣度上下功夫:書中對虛擬機、多級流水線、超標量體系結構、多任務、IA-32保護內存的尋址和分頁。指令編碼和有限狀態(tài)機等概念進行了詳細的介紹,另外,本書以大量的篇幅介紹了匯編語言和C語言等高級語言的接口。代碼優(yōu)化實例。數組的實現、查找和排序算法等大量實用性很強的內容,最后,考慮到匯編語言向Windows平臺遷移的趨勢是不可逆轉的,本書在所有內容的介紹中都涉及了32位編程的講解,并以單獨的一章講述了32位Windows程序編程的基本方法。為了便于讀者學習,本書將所有的例子代碼收錄在本書附帶的光盤中,并在作者的網站上提供了更多的源代碼例子。每章的最后都設置了習題,并在網站上提供了習題的答案。本書非常適合于作為大中院校匯編課程的教材,也是匯編語言愛好者不可多得的自學教材。本書的第11章由羅云彬翻譯,其他所有章節(jié)由溫玉杰。張家生翻譯。另外,羅云彬負責本書全書的審校工作。由于時間緊促,加上譯者水平有限,書中難免存在不足和疏漏之處,敬請讀者指正和諒解?!禝ntel匯編語言程序設計》一書第四版介紹的知識是基于IntelIA-32處理器體系結構的。從程序員的角度來看,本書適合作為下列計算機專業(yè)課程的教材:●匯編語言程序設計●計算機系統(tǒng)基礎知識●計算機體系結構基礎知識盡管本書最初是為普通高校的學生編寫的,但現在的讀者群已經遠不止于此了。很多大學都使用本書作為計算機體系結構課程的入門教材。例如,佛羅里達國際大學就采用本書作為計算機系統(tǒng)基礎知識:一門將引出更全面深人地探討計算機體系結構的課程的教材。本書的當前版本包含了以下主題,這些主題將自然地引出計算機體系結構、操作系統(tǒng)和編譯器編寫等后續(xù)課程:●虛擬機的概念●基本的布爾運算●指令執(zhí)行周期●內存訪問中時鐘周期的使用●中斷●多級流水線●超標量體系結構●多任務●加載和執(zhí)行程序●浮點數的二進制表示本書中的其他一些主題則是與IA-32體系結構相關的,書中使用的信息來自于它的手冊:●IA-32保護內存的尋址和分頁●實地址模式下的內存分段●中斷處理●直接硬件I/O●指令編碼對于以后將要學習計算機科學課程的讀者來說,書中給出的下列例子是很有幫助的:●查找和排序算法●高級語言接口●有限狀態(tài)機●代碼優(yōu)化實例本書的當前版本還涉及以下一些與程序設計相關的新內容:●有關數據定義的更全面詳盡的解釋●有關尋址方式的更細致的講解●適用于幾乎所有過程的簡化鏈接庫,它們所需的輸人參數更少,如新的顯示CPU寄存器和內存內容的過程以及延時過程●對于自頂向下程序設計的講解和說明●使用流程圖作為代碼生成工具●對匯編語言偽指令、宏和操作符等內容的更加全面而詳盡的說明。例如:本書全面深入地講解了PROC,PROTO和INVOKE偽指令●更完整地介紹了結構,包括嵌套結構和結構數組●IF,WHILE和REPEAT等塊結構語句(這是MASM的高級特性)●介紹了視頻顯示,包括使用BIOS和直接內存映射技術●鼠標程序設計●Win32控制臺程序設計,直接調用WindowsKernel32庫●更多的數組操作實例本書仍然是一本程序設計教材讀者要注意的是,本書的著重點仍然在于其原來的任務:教會學生如何在硬件層次編寫和調試程序。本書并不能夠替代那些全面介紹計算機體系結構的書籍,但它的確給了學生們在計算機真實工作的環(huán)境中編寫軟件的第一手經驗,這一點的價值絕不可低估,因為他們將在同機器的即時接觸中牢記大量的理論知識。在工程課程中,學生們將學習如何構建原型,在軟件課程中,學生們將學習如何編寫程序。在這兩種課程中,原來獲得的經驗將給予他們在任何操作系統(tǒng)或面向機器的環(huán)境中工作的信心。實模式和保護模式教師們都表示愿意轉向使用Intel保護內存模式的32位程序設計,本書強調了32位保護模式,但其中仍然有三章全部講述實模式程序設計。書中用一整章內容講述鍵盤。視頻顯示(包括圖形)和鼠標的BIOS程序設計,還有一整章是關于使用中斷功能調用MS-DOS程序設計的。對于學生們而言,獲得一些直接面向固件和硬件的程序設計經驗是非常有益的。本書前面部分的例子幾乎全部是32位的基于文本的應用程序,它們運行于保護模式下并使用平坦模式,這樣程序就顯得非常直觀,學生們不必處理段-偏移尋址這類問題。書中用特別標記的段落及提示框提示學生實模式和保護模式程序設計之間的細微差別,其中的大部分差別都封裝在本書的兩個鏈接庫中了。鏈接庫學生們使用兩個版本的鏈接庫進行基本的輸入輸出。32位版本的鏈接庫(Irvine32.lib)可在任何版本的MS-Windows的Win32控制臺模式下工作,16位版本可在MS-DOS,MS-Windows和Linux的DOS模擬器下工作.在本書后面部分的章節(jié)中,兩個鏈接庫中的所有函數都被逐一例舉,讀者還可以根據自己的需要修改庫.應該注意的是,鏈接庫僅僅是為了方便使用,面不是用來阻止學生們學習自己進行輸入輸出編程的。包含的軟件和例子本書中所有例子程序都已經使用Microsoft6.15版本的宏匯編編譯器測試通過。在大多數情況下,例子程序可以用Borland的TASM4.和5.編譯,但是有些特性是Borland匯編編譯器所不支持的。網站信息有關更新和勘誤可以在下面的網站上找到,其中包括教授們要在章節(jié)授課結束時布置的額外的程序設計項目:http://www.nuvisionmiami.com/books/asm如果由于某種原因造成上面的網址無法訪問的話,可通過在www.prenhall.com搜索書名或作者全名"Kiplrvine"來獲取關于本書的信息以及網站的最新鏈接。作者的e-mail地址是kip@nuvisionmiami.Com。總體目標本書的每個目標都是為了激發(fā)學生們對匯編語言相關主題的興趣,以此來拓展他們的知識:●IntelIA-32處理器體系結構和程序設計●匯編語言偽指令、宏、運算符和程序結構●程序設計方法學,展示如何使用匯編語言創(chuàng)建系統(tǒng)級軟件工具和應用程序●計算機硬件控制●匯編語言程序、操作系統(tǒng)和其他應用程序之間的交互。作者的目標之一是幫助學生在機器層次思考并處理程序設計中遇到的問題。在程序設計時,把CPU看成是一個交互工具并學會盡可能直接地監(jiān)視其各種動作是很重要的。調試器是程序員最好的朋友,這不僅僅是因為它可以用來捕捉錯誤,更重要的是它可以作為了解有關CPU和操作系統(tǒng)的教學工具。作者鼓勵學生們探究高級語言表象之下的內在細節(jié),這樣可以認識到大多數高級語言都被設計成可移植的,從而使其獨立于主機系統(tǒng)。除了簡短的例子之外,書中還包括了115個馬上就可以運行的例子程序,這些程序解釋了教材中相應的指令和一些思想。MS-DOS中斷和指令助記符等參考材料可在本書"前言"的最后找到。書中一個全面的鏈接庫使學生在寫第一個程序時更容易訪問用戶界面,書中包含的宏庫也可能會為教授和學生的進一步開發(fā)提供靈感。需要的背景知識至少應該已經能夠用其他一門程序設計語言自信地編寫程序,最好是使用Pascal,Java,C或C++,書中的一章研究了匯編語言和C++的接口,其內容有一定的深度,因此讀者手頭有一個編譯器是很有幫助的。作者在計算機科學和管理信息系統(tǒng)專業(yè)課還有其他一些工程課上使用了本書作為教材,授課時使用了MicrosoftVisualC++6.和BorlandC++5.來處理與高級語言接口的例子。本書特點完整的程序清單本書附帶的CD-ROM包括了書中所有例子的源代碼,作者的網站上有更多的程序清單。本書還包含了一個擴展鏈接庫,其中包含了3多個用于簡化用戶輸入輸出、數值處理、磁盤和文件操作以及字符串處理的函數。在課程的開始階段,學生可以使用該庫增強他們的程序,隨后可以創(chuàng)建自己的過程并把它們添加到鏈接庫中。16位和32位庫的完整源代碼均已給出。程序設計邏輯書中的兩章強調了布爾邏輯和位操作,作者有意盡量把高級語言程序設計邏輯同機器的底層細節(jié)聯系起來,這有助于學生高效地實現程序并更好地理解語言編譯器是如何生成目標代碼的。硬件和操作系統(tǒng)的概念前兩章介紹了基本的計算機硬件和數據表示方法的概念,包括二進制數。CPU體系結構。狀態(tài)標志和內存映射等。另外還包括了計算機硬件的概覽和對Intel系列處理器歷史演變的介紹,這些有助于讀者更好地理解目標計算機系統(tǒng)。結構化程序設計方法從第5章開始,本書重點強調了過程和模塊分解。學生們要解決復雜的程序設計問題,這需要精心組織代碼并處理復雜性的能力。磁盤存儲概念學生們將從硬件和軟件兩個方面學習PC磁盤存儲系統(tǒng)的基本原理。創(chuàng)建鏈接庫學生們可在本書鏈接庫中自由地添加新過程,也可以創(chuàng)建自己的庫。他們將學會使用工具箱方法進行程序設計,編寫在多個程序中可重用的代碼。宏和結構本書中有專門一章講述如何創(chuàng)建結構。聯合和宏,這在匯編語言和高級語言中都是很重要的。帶高級操作符的條件宏使宏更加專業(yè)。與高級語言的接口本書用一章的內容專門講述匯編語言與C和C++的接口,這對于那些可能要以高級語言程序設計謀職的學生來說實在是很重要的,他們將學會優(yōu)化自己編寫的代碼并看到編譯器優(yōu)化代碼的實際例子。教學輔助所有的程序清單都可在隨書附帶CD-ROM和Web站點上找到,上面還為教師提供了所有習題。編程練習的解答和匯編語言的相關資源。授課順序第1章至第8章講述了匯編語言的基礎知識,授課時應當按順序講授。作者做了很大的努力使章節(jié)之間銜接自然。第1章(基本概念):匯編語言應用程序,基本概念,機器語言和數據表示法。第2章(1A-32處理器體系結構):基本微處理器設計,指令執(zhí)行周期,IA-32處理器體系結構,IA-32內存管理,微機構成,輸入輸出系統(tǒng)。第3章(匯編語言基礎):匯編語言的介紹,鏈接和調試,定義常量和變量。第4章(數據傳送。尋址和算術運算):簡單的數據傳送和算術運算指令,匯編-鏈接-執(zhí)行周期,操作符。指令。表達式。JMP和LOOP指令以及間接尋址。第5章(過程):與外部庫的鏈接,本書鏈接庫的描述,堆棧操作,定義和使用過程,流程圖,自頂向下的結構化設計。第6章(條件處理):布爾和比較指令,條件跳轉和循環(huán),高級邏輯結構,有限狀態(tài)機。第7章(整數算術指令):移位和循環(huán)移位指令,乘法和除法指令,擴展加法和擴展減法指令,ASCII和壓縮十進制算術指令。第8章(高級過程):堆??蚣?,局部變量,參數聲明,遞歸和高級參數傳遞。在第9章至第16章中,教師可以根據課程設置的情況,選擇與課程最適合的主題以任意順序講授。第9章(字符串和數組):字符串操作指令,字符和整數數組的操作,二維數組,數組的排序和查找。第1章(結構和宏):結構,宏,條件匯編指令,定義重復塊。第11章(32位Windows編程):保護模式內存管理。使用MicrosoftWindowsAPl在控制臺上顯示文本及色彩。第12章(高級語言接口):參數傳遞約定,高級語言內嵌匯編代碼,匯編代碼模塊同C/C++,程序相鏈接。第13章(16位MS-DOS程序設計):調用MS-DOS中斷進行控制臺和文件輸入輸出操作。第14章(磁盤基礎知識):磁盤存儲系統(tǒng),扇區(qū).簇和目錄,文件分配表,處理MS-DOS錯誤碼,驅動器和目錄操作。第15章(BIOS程序設計):鍵盤輸入.視頻文本和圖形編程以及鼠標程序設計。第16章(高級MS-DOS程序設計):自定義的段,運行時程序結構和中斷處理。第17章(高級主題):使用I/O端口控制硬件,指令編碼,浮點數的二進制表示,浮點算術運算?!窀戒汚:匯編編譯器的安裝和使用●附錄B:Intel指令集●附錄C:BIOS和MS-DOS中斷●附錄D:MASM參考手冊