關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
匯編語(yǔ)言:基于x86處理器(原書(shū)第7版) 本書(shū)是匯編語(yǔ)言課程的經(jīng)典教材,系統(tǒng)介紹x86和Intel64處理器的匯編語(yǔ)言編程和架構(gòu)。前9章為匯編語(yǔ)言的核心概念,包括:匯編語(yǔ)言基礎(chǔ),x86處理器架構(gòu),數(shù)據(jù)傳送、尋址和算術(shù)運(yùn)算,過(guò)程,條件處理,整數(shù)運(yùn)算,高級(jí)過(guò)程,以及字符串和數(shù)組。本書(shū)為原書(shū)第7版,增加了部分實(shí)例程序的討論,補(bǔ)充了更多的復(fù)習(xí)題和關(guān)鍵術(shù)語(yǔ),介紹了64位編程;還有配套的網(wǎng)上資料,提供完整的程序清單、復(fù)習(xí)題答案和編程練習(xí)的解決方案。 前 言A 本書(shū)介紹x86和Intel64處理器的匯編語(yǔ)言編程與架構(gòu),適合作為下述幾類(lèi)大學(xué)課程的教材: 匯編語(yǔ)言編程計(jì)算機(jī)系統(tǒng)基礎(chǔ)計(jì)算機(jī)體系結(jié)構(gòu)基礎(chǔ)學(xué)生使用Intel或AMD處理器,用Microsoft宏匯編器(Microsoft Macro Assembler,MASM)編程,MASM運(yùn)行在Microsoft Windows最新的版本上。盡管本書(shū)的初衷是作為大學(xué)生的編程教材,但它也是計(jì)算機(jī)體系結(jié)構(gòu)課程的有效補(bǔ)充。本書(shū)廣受歡迎,前幾個(gè)版本已被翻譯為多種語(yǔ)言。 重點(diǎn)主題 本版所含主題可以自然過(guò)渡到講述計(jì)算機(jī)體系結(jié)構(gòu)、操作系統(tǒng)和編寫(xiě)編譯器的后續(xù)課程: 虛擬機(jī)概念指令集架構(gòu)基本布爾運(yùn)算指令執(zhí)行周期內(nèi)存訪問(wèn)和握手中斷和輪詢基于硬件的I/O浮點(diǎn)數(shù)二進(jìn)制表示其他主題則專(zhuān)門(mén)針對(duì)x86和Intel64架構(gòu): 受保護(hù)的內(nèi)存和分頁(yè)實(shí)地址模式的內(nèi)存分段16位中斷處理MS-DOS和BIOS系統(tǒng)調(diào)用(中斷)浮點(diǎn)單元架構(gòu)和編程指令編碼本書(shū)中的某些例子還可以用于計(jì)算機(jī)科學(xué)課程體系中的后續(xù)課程: 搜索與排序算法高級(jí)語(yǔ)言結(jié)構(gòu)有限狀態(tài)機(jī)代碼優(yōu)化示例第7版的新內(nèi)容這一版增加了對(duì)程序示例的討論,添加了更多的復(fù)習(xí)題和關(guān)鍵術(shù)語(yǔ),介紹了64位編程,降低了對(duì)子程序庫(kù)的依賴性。具體內(nèi)容如下: 本版前面的幾章現(xiàn)在包含了以64位CPU架構(gòu)和編程為主的小節(jié),并且還創(chuàng)建了子程序庫(kù)的64位版本Irvine64。 修改、替換了很多復(fù)習(xí)題和練習(xí),部分題目從章節(jié)內(nèi)移動(dòng)到該章末尾,且習(xí)題分為兩部分:簡(jiǎn)答題和算法基礎(chǔ)練習(xí)。后者要求學(xué)生編寫(xiě)一小段代碼實(shí)現(xiàn)一個(gè)目標(biāo)。 每章有一節(jié)為關(guān)鍵術(shù)語(yǔ),列出了新的術(shù)語(yǔ)和概念,以及新的MASM偽指令和Intel指令。 添加了新的編程練習(xí),刪除了一些舊習(xí)題,并對(duì)一些現(xiàn)有的練習(xí)進(jìn)行了修改。 本書(shū)對(duì)作者子程序庫(kù)的依賴性大大減低。鼓勵(lì)學(xué)生自己調(diào)用系統(tǒng)函數(shù),并使用Visual Studio調(diào)試器單步執(zhí)行程序。Irvine32和Irvine64鏈接庫(kù)可以幫助學(xué)生處理輸入/輸出,但是不強(qiáng)制要求使用它們。 作者錄制的新視頻教程涵蓋了本書(shū)的基本內(nèi)容,并已添加到Pearson網(wǎng)站。 本書(shū)仍然關(guān)注其首要目標(biāo),即教授學(xué)生編寫(xiě)并調(diào)試機(jī)器級(jí)程序。它不能代替計(jì)算機(jī)體系結(jié)構(gòu)的完整教材,但它確實(shí)在告訴學(xué)生計(jì)算機(jī)工作原理的基礎(chǔ)上,給出了編寫(xiě)軟件的第一手經(jīng)驗(yàn)。我們認(rèn)為,理論聯(lián)系實(shí)際能讓學(xué)生更好地掌握知識(shí)。在工程課程中,學(xué)生構(gòu)建原型;在計(jì)算機(jī)體系結(jié)構(gòu)課程中,學(xué)生應(yīng)編寫(xiě)機(jī)器級(jí)程序。在這些課程里,學(xué)生都能獲得難忘的經(jīng)驗(yàn),從而有信心在任何OS/面向機(jī)器的環(huán)境中工作。 保護(hù)模式編程是紙版章節(jié)(第1章~第13章)的重中之重。因此,學(xué)生需要在最新版本的Microsoft Windows環(huán)境下創(chuàng)建并運(yùn)行32位和64位程序。其他4章是電子版,講述16位編程。這些章包含了BIOS編程、MS-DOS服務(wù)、鍵盤(pán)和鼠標(biāo)輸入、視頻編程和圖形圖像內(nèi)容。其中一章為磁盤(pán)存儲(chǔ)基礎(chǔ),還有一章為高級(jí)DOS編程技術(shù)。 子程序庫(kù) 本書(shū)為學(xué)生提供了三個(gè)版本的子程序庫(kù),用于基本輸入/輸出、模擬、計(jì)時(shí)和其他有用的任務(wù)。Irvine32和Irvine64鏈接庫(kù)運(yùn)行于保護(hù)模式。16位版本的鏈接庫(kù)(Irvine16.lib)運(yùn)行于實(shí)地址模式,且只用于第14章~第17章。這些庫(kù)的完整源代碼見(jiàn)于配套的網(wǎng)站。鏈接庫(kù)是為了使用方便,而不是為了阻止學(xué)生學(xué)習(xí)如何自行對(duì)輸入–輸出編程。鼓勵(lì)學(xué)生創(chuàng)建自己的鏈接庫(kù)。 所含軟件與示例 所有示例程序均在Microsoft Visual Studio 2012下,用Microsoft Macro Assembler Version 11.0進(jìn)行了驗(yàn)證。此外,還提供了批處理文件允許學(xué)生用Windows命令行匯編和運(yùn)行應(yīng)用程序。第14章中的32位C++應(yīng)用程序已用Microsoft Visual C++ .NET測(cè)試。本書(shū)的內(nèi)容更新與勘誤參見(jiàn)配套的網(wǎng)站,其中包括了一些額外的編程項(xiàng)目,老師可以在章節(jié)結(jié)束的時(shí)候布置給學(xué)生。 總體目標(biāo)本書(shū)的以下目標(biāo)旨在提高學(xué)生對(duì)匯編語(yǔ)言相關(guān)知識(shí)的興趣并拓展知識(shí)面: Intel和AMD處理器架構(gòu)與編程;實(shí)地址模式和保護(hù)模式編程;匯編語(yǔ)言偽指令、宏、運(yùn)算符與程序結(jié)構(gòu);編程方法,展示了如何用匯編語(yǔ)言創(chuàng)建系統(tǒng)級(jí)軟件工具和應(yīng)用程序;計(jì)算機(jī)硬件操作;匯編語(yǔ)言程序、操作系統(tǒng)和其他應(yīng)用程序之間的交互作用。 本書(shū)的目標(biāo)之一是幫助學(xué)生以機(jī)器級(jí)的思維方式來(lái)處理編程問(wèn)題。將CPU視為交互工具,學(xué)習(xí)盡可能直接地監(jiān)控其操作是很重要的。調(diào)試器是程序員最好的朋友,不僅可以捕捉錯(cuò)誤,還可以用作學(xué)習(xí)CPU和操作系統(tǒng)的教學(xué)工具。我們鼓勵(lì)學(xué)生探查高級(jí)語(yǔ)言的內(nèi)部機(jī)制,并能意識(shí)到大多數(shù)編程語(yǔ)言都被設(shè)計(jì)為可移植的,因此,也獨(dú)立于其運(yùn)行的主機(jī)。除了短小的示例外,本書(shū)還有幾百個(gè)可運(yùn)行的程序來(lái)演示書(shū)中講述的指令和思想。本書(shū)結(jié)尾有參考資料,包括MS-DOS中斷和指令助記符指南。 背景知識(shí) 讀者應(yīng)至少能熟練使用一種高級(jí)語(yǔ)言進(jìn)行編程,比如Python、Java、C或C++。本書(shū)有一章涉及C++接口,因此,如果手邊有編譯器將會(huì)非常有幫助。本書(shū)不僅已經(jīng)用于計(jì)算機(jī)科學(xué)和管理信息系統(tǒng)專(zhuān)業(yè)課堂,而且還用于其他工程課程。 特點(diǎn)完整的程序清單 配套的網(wǎng)站包含了補(bǔ)充資料、學(xué)習(xí)指南,以及本書(shū)全部示例的源代碼。本書(shū)還提供了豐富的鏈接庫(kù),其中包括30多個(gè)過(guò)程,可以簡(jiǎn)化用戶輸入–輸出、數(shù)字處理、磁盤(pán)和文件處理,以及字符串處理。課程初期,學(xué)生可以用這個(gè)鏈接庫(kù)來(lái)改進(jìn)自己編寫(xiě)的程序。之后,學(xué)生可以自行編寫(xiě)過(guò)程并將它們添加到鏈接庫(kù)中。 編程邏輯 本書(shū)用兩章的篇幅重點(diǎn)介紹了布爾邏輯和位操作,并且有意識(shí)地嘗試將高級(jí)編程邏輯與底層機(jī)器細(xì)節(jié)對(duì)應(yīng)起來(lái)。這有助于學(xué)生創(chuàng)建更有效的實(shí)現(xiàn),且有助于他們更好地理解編譯器是如何生成目標(biāo)代碼的。 硬件和操作系統(tǒng)概念 本書(shū)前兩章介紹基礎(chǔ)硬件和數(shù)據(jù)表示概念,包括二進(jìn)制數(shù)、CPU架構(gòu)、狀態(tài)標(biāo)志和內(nèi)存映射。概述硬件和以歷史的角度審視Intel處理器系列可以幫助學(xué)生更好地理解其目標(biāo)計(jì)算機(jī)系統(tǒng)。 結(jié)構(gòu)化程序設(shè)計(jì)方法 從第5章開(kāi)始,關(guān)注重點(diǎn)為過(guò)程和功能分解。同時(shí),提供了更復(fù)雜的編程練習(xí),要求學(xué)生在編碼之前把設(shè)計(jì)作為重點(diǎn)。 Java字節(jié)碼和Java虛擬機(jī) 第8章和第9章解釋了Java字節(jié)碼的基本操作,并給出了簡(jiǎn)短的演示例子。很多短示例不僅給出了反匯編字節(jié)碼形式,還給出了詳細(xì)的步驟解釋。 磁盤(pán)存儲(chǔ)概念 學(xué)生從硬件和軟件的角度學(xué)習(xí)基于MS-Windows的磁盤(pán)存儲(chǔ)系統(tǒng)的基本原理。 創(chuàng)建鏈接庫(kù) 學(xué)生不僅可以自由地把自己編寫(xiě)的過(guò)程添加到本書(shū)鏈接庫(kù),還可以創(chuàng)建新的鏈接庫(kù)。他們要學(xué)習(xí)用工具箱方法進(jìn)行編程,并編寫(xiě)多個(gè)程序可以共用的代碼。 宏和結(jié)構(gòu) 本書(shū)用一章專(zhuān)門(mén)描述創(chuàng)建結(jié)構(gòu)、聯(lián)合以及宏,這些對(duì)匯編語(yǔ)言編程和系統(tǒng)編程是非常重要的。條件宏和高級(jí)運(yùn)算符使得宏更加專(zhuān)業(yè)。 高級(jí)語(yǔ)言接口 本書(shū)用一章專(zhuān)門(mén)描述匯編語(yǔ)言與C和C++的接口。對(duì)于想要從事高級(jí)語(yǔ)言編程工作的學(xué)生而言,這是一項(xiàng)重要的工作技能。他們可以學(xué)習(xí)代碼優(yōu)化,還可以通過(guò)例子了解C++編譯器是如何優(yōu)化代碼的。 教學(xué)輔助 所有的程序清單都在網(wǎng)上。同時(shí)向教師提供了測(cè)試庫(kù)、復(fù)習(xí)題答案、編程練習(xí)的解決方案,以及每章的PPT。 章節(jié)說(shuō)明第1章~第9章為匯編語(yǔ)言核心概念,需要按順序?qū)W習(xí)。后面的章節(jié)則可以自由選擇。下面的章節(jié)示意圖展示了后續(xù)章節(jié)與其他章節(jié)知識(shí)之間的依賴關(guān)系。 第1章 基本概念:匯編語(yǔ)言的應(yīng)用、基礎(chǔ)概念、機(jī)器語(yǔ)言和數(shù)據(jù)表示。 第2章 x86處理器架構(gòu):基本微計(jì)算機(jī)設(shè)計(jì)、指令執(zhí)行周期、x86處理器架構(gòu)、Intel64架構(gòu)、x86內(nèi)存管理、微計(jì)算機(jī)組件、輸入–輸出系統(tǒng)。 第3章 匯編語(yǔ)言基礎(chǔ):介紹匯編語(yǔ)言、鏈接和調(diào)試、常量和變量定義。 第4章 數(shù)據(jù)傳送、尋址和算術(shù)運(yùn)算:簡(jiǎn)單的數(shù)據(jù)傳送和算術(shù)運(yùn)算指令、匯編–鏈接–執(zhí)行周期、運(yùn)算符、偽指令、表達(dá)式、JMP和LOOP指令、間接尋址。 第5章 過(guò)程:與外部鏈接庫(kù)的鏈接、描述本書(shū)鏈接庫(kù)、堆棧操作、過(guò)程的定義和使用、流程圖、自頂向下的結(jié)構(gòu)設(shè)計(jì)。 第6章 條件處理:布爾和比較指令、條件跳轉(zhuǎn)和循環(huán)、高級(jí)邏輯結(jié)構(gòu)、有限狀態(tài)機(jī)。 第7章 整數(shù)運(yùn)算:移位和循環(huán)移位指令及其應(yīng)用、乘法和除法、擴(kuò)展加法和減法、ASCII和壓縮十進(jìn)制運(yùn)算。 第8章 高級(jí)過(guò)程:堆棧參數(shù)、局部變量、高級(jí)PROC和INVOKE偽指令、遞歸。 第9章 字符串和數(shù)組:字符串原語(yǔ)、操作字符和整數(shù)數(shù)組、二維數(shù)組、排序和檢索。 第10章 結(jié)構(gòu)和宏:結(jié)構(gòu)、宏、條件匯編偽指令、定義重復(fù)塊。 第11章 MS-Windows編程:保護(hù)模式內(nèi)存管理概念、用Microsoft-Windows API顯示文本和顏色,動(dòng)態(tài)內(nèi)存分配。 第12章 浮點(diǎn)數(shù)處理與指令編碼:浮點(diǎn)數(shù)二進(jìn)制表示和浮點(diǎn)運(yùn)算。學(xué)習(xí)IA-32浮點(diǎn)單元編程。理解IA-32機(jī)器指令編碼。 第13章 高級(jí)語(yǔ)言接口:參數(shù)傳遞規(guī)范、內(nèi)嵌匯編代碼、將匯編語(yǔ)言模塊鏈接到C和C++程序。 附錄A MASM參考知識(shí)附錄B x86指令集附錄C “本節(jié)回顧”問(wèn)題答案下面的章節(jié)和附錄由配套網(wǎng)站提供: 第14章 16位MS-DOS編程:內(nèi)存組織、中斷、函數(shù)調(diào)用、標(biāo)準(zhǔn)MS-DOS文件I/O服務(wù)。 第15章 磁盤(pán)基礎(chǔ)知識(shí):磁盤(pán)存儲(chǔ)系統(tǒng)、扇區(qū)、簇、目錄、文件分配表、處理MS-DOS錯(cuò)誤碼、驅(qū)動(dòng)器和目錄操作。 第16章 BIOS編程:鍵盤(pán)輸入、視頻文本、圖形、鼠標(biāo)編程。 第17章 高級(jí)MS-DOS編程:自定義設(shè)計(jì)段、運(yùn)行時(shí)程序結(jié)構(gòu)、中斷處理、用I/O端口的硬件控制。 附錄D BIOS和MS-DOS中斷附錄E “本節(jié)回顧”問(wèn)題答案(第14章~第17章)教師和學(xué)生資源教師資源下面受保護(hù)的教師資源見(jiàn)配套網(wǎng)站www.pearsonhighered.com/irvine: PPT講義教師解題手冊(cè)學(xué)生資源學(xué)生通過(guò)位于www.pearsonhighered.com/irvine的出版社網(wǎng)站可以找到本書(shū)作者的網(wǎng)站鏈接。下述資源位于www.asmirvine.com,且不需要用訪問(wèn)卡: Getting Started(入門(mén)),循序漸進(jìn)的完整教程,幫助學(xué)生設(shè)置Visual Studio進(jìn)行匯編語(yǔ)言編程。 與匯編語(yǔ)言編程主題相關(guān)的補(bǔ)充讀物。 本書(shū)全部示例程序的完整代碼,以及作者補(bǔ)充鏈接庫(kù)的源代碼。 Assembly Language Workbook(匯編語(yǔ)言工作手冊(cè)),一個(gè)交互式的工作手冊(cè),其中包括數(shù)值轉(zhuǎn)換、尋址模式、寄存器使用、調(diào)試編程和浮點(diǎn)二進(jìn)制數(shù)。內(nèi)容頁(yè)面是可以自定義的HTML文檔,幫助文件為Windows幫助格式。 調(diào)試工具:Microsoft Visual Studio調(diào)試器用法教程。 致謝非常感謝培生教育(Pearson Education)計(jì)算機(jī)科學(xué)的執(zhí)行主編Tracy Johnson,過(guò)去幾年提供了友好且有益的指導(dǎo)。感謝Jouve公司的Pavithra Jayapaul以及培生出版社的產(chǎn)品編輯Greg Dulles為本書(shū)出版所做的出色工作。 早期版本特別感謝以下諸位,他們?cè)诒緯?shū)早期版本中提供了極大的幫助: William Barrett,圣何塞州立大學(xué)Scott BlackledgeJames Brink,太平洋路德大學(xué)Gerald Cahill,羚羊谷學(xué)院 出版者的話 譯者序 前言 第1章 基本概念 1 1.1 歡迎來(lái)到匯編語(yǔ)言的世界 1 1.1.1 讀者可能會(huì)問(wèn)的問(wèn)題 2 1.1.2 匯編語(yǔ)言的應(yīng)用 4 1.1.3 本節(jié)回顧 5 1.2 虛擬機(jī)概念 5 1.3 數(shù)據(jù)表示 7 1.3.1 二進(jìn)制整數(shù) 7 1.3.2 二進(jìn)制加法 8 1.3.3 整數(shù)存儲(chǔ)大小 9 1.3.4 十六進(jìn)制整數(shù) 10 1.3.5 十六進(jìn)制加法 11 1.3.6 有符號(hào)二進(jìn)制整數(shù) 12 1.3.7 二進(jìn)制減法 13 1.3.8 字符存儲(chǔ) 14 1.3.9 本節(jié)回顧 15 1.4 布爾表達(dá)式 16 1.4.1 布爾函數(shù)真值表 18 1.4.2 本節(jié)回顧 18 1.5 本章小結(jié) 19 1.6 關(guān)鍵術(shù)語(yǔ) 19 1.7 復(fù)習(xí)題和練習(xí) 20 1.7.1 簡(jiǎn)答題 20 1.7.2 算法基礎(chǔ) 21 第2章 x86處理器架構(gòu) 23 2.1 一般概念 23 2.1.1 基本微機(jī)設(shè)計(jì) 23 2.1.2 指令執(zhí)行周期 24 2.1.3 讀取內(nèi)存 25 2.1.4 加載并執(zhí)行程序 26 2.1.5 本節(jié)回顧 26 2.2 32位x86處理器 27 2.2.1 操作模式 27 2.2.2 基本執(zhí)行環(huán)境 27 2.2.3 x86內(nèi)存管理 30 2.2.4 本節(jié)回顧 30 2.3 64位x86-64處理器 30 2.3.1 64位操作模式 31 2.3.2 基本64位執(zhí)行環(huán)境 31 2.4 典型x86計(jì)算機(jī)組件 32 2.4.1 主板 32 2.4.2 內(nèi)存 34 2.4.3 本節(jié)回顧 34 2.5 輸入輸出系統(tǒng) 34 2.5.1 I/O訪問(wèn)層次 34 2.5.2 本節(jié)回顧 36 2.6 本章小結(jié) 36 2.7 關(guān)鍵術(shù)語(yǔ) 37 2.8 復(fù)習(xí)題 38 第3章 匯編語(yǔ)言基礎(chǔ) 39 3.1 基本語(yǔ)言元素 39 3.1.1 第一個(gè)匯編語(yǔ)言程序 39 3.1.2 整數(shù)常量 40 3.1.3 整型常量表達(dá)式 41 3.1.4 實(shí)數(shù)常量 41 3.1.5 字符常量 42 3.1.6 字符串常量 42 3.1.7 保留字 42 3.1.8 標(biāo)識(shí)符 43 3.1.9 偽指令 43 3.1.10 指令 44 3.1.11 本節(jié)回顧 46 3.2 示例:整數(shù)加減法 46 3.2.1 AddTwo程序 46 3.2.2 運(yùn)行和調(diào)試AddTwo程序 48 3.2.3 程序模板 52 3.2.4 本節(jié)回顧 52 3.3 匯編、鏈接和運(yùn)行程序 53 3.3.1 匯編–鏈接–執(zhí)行周期 53 3.3.2 列表文件 53 3.3.3 本節(jié)回顧 55 3.4 定義數(shù)據(jù) 55 3.4.1 內(nèi)部數(shù)據(jù)類(lèi)型 55 3.4.2 數(shù)據(jù)定義語(yǔ)句 55 3.4.3 向AddTwo程序添加一個(gè)變量 56 3.4.4 定義BYTE和SBYTE數(shù)據(jù) 57 3.4.5 定義WORD和SWORD數(shù)據(jù) 59 3.4.6 定義DWORD和SDWORD數(shù)據(jù) 59 3.4.7 定義QWORD數(shù)據(jù) 60 3.4.8 定義壓縮BCD(TBYTE)數(shù)據(jù) 60 3.4.9 定義浮點(diǎn)類(lèi)型 61 3.4.10 變量加法程序 61 3.4.11 小端順序 62 3.4.12 聲明未初始化數(shù)據(jù) 62 3.4.13 本節(jié)回顧 63 3.5 符號(hào)常量 63 3.5.1 等號(hào)偽指令 63 3.5.2 計(jì)算數(shù)組和字符串的大小 64 3.5.3 EQU偽指令 65 3.5.4 TEXTEQU偽指令 66 3.5.5 本節(jié)回顧 66 3.6 64位編程 67 3.7 本章小結(jié) 68 3.8 關(guān)鍵術(shù)語(yǔ) 69 3.8.1 術(shù)語(yǔ) 69 3.8.2 指令、運(yùn)算符和偽指令 70 3.9 復(fù)習(xí)題和練習(xí) 70 3.9.1 簡(jiǎn)答題 70 3.9.2 算法基礎(chǔ) 71 3.10 編程練習(xí) 71 第4章 數(shù)據(jù)傳送、尋址和算術(shù)運(yùn)算 73 4.1 數(shù)據(jù)傳送指令 73 4.1.1 引言 73 4.1.2 操作數(shù)類(lèi)型 73 4.1.3 直接內(nèi)存操作數(shù) 74 4.1.4 MOV指令 75 4.1.5 整數(shù)的全零/符號(hào)擴(kuò)展 76 4.1.6 LAHF和SAHF指令 77 4.1.7 XCHG指令 78 4.1.8 直接–偏移量操作數(shù) 78 4.1.9 示例程序(Moves) 79 4.1.10 本節(jié)回顧 80 4.2 加法和減法 81 4.2.1 INC和DEC指令 81 4.2.2 ADD指令 81 4.2.3 SUB指令 81 4.2.4 NEG指令 82 4.2.5 執(zhí)行算術(shù)表達(dá)式 82 4.2.6 加減法影響的標(biāo)志位 82 4.2.7 示例程序(AddSubTest) 85 4.2.8 本節(jié)回顧 86 4.3 與數(shù)據(jù)相關(guān)的運(yùn)算符和偽指令 87 4.3.1 OFFSET運(yùn)算符 87 4.3.2 ALIGN偽指令 88 4.3.3 PTR運(yùn)算符 88 4.3.4 TYPE運(yùn)算符 89 4.3.5 LENGTHOF運(yùn)算符 89 4.3.6 SIZEOF運(yùn)算符 90 4.3.7 LABEL偽指令 90 4.3.8 本節(jié)回顧 90 4.4 間接尋址 91 4.4.1 間接操作數(shù) 91 4.4.2 數(shù)組 91 4.4.3 變址操作數(shù) 92 4.4.4 指針 93 4.4.5 本節(jié)回顧 95 4.5 JMP和LOOP指令 95 4.5.1 JMP指令 96 4.5.2 LOOP指令 96 4.5.3 在Visual Studio調(diào)試器中顯示數(shù)組 97 4.5.4 整數(shù)數(shù)組求和 98 4.5.5 復(fù)制字符串 98 4.5.6 本節(jié)回顧 99 4.6 64位編程 99 4.6.1 MOV指令 99 4.6.2 64位的SumArray程序 100 4.6.3 加法和減法 101 4.6.4 本節(jié)回顧 102 4.7 本章小結(jié) 102 4.8 關(guān)鍵術(shù)語(yǔ) 104 4.8.1 術(shù)語(yǔ) 104 4.8.2 指令、運(yùn)算符和偽指令 104 4.9 復(fù)習(xí)題和練習(xí) 104 4.9.1 簡(jiǎn)答題 104 4.9.2 算法基礎(chǔ) 106 4.10 編程練習(xí) 107 第5章 過(guò)程 108 5.1 堆棧操作 108 5.1.1 運(yùn)行時(shí)堆棧(32位模式) 108 5.1.2 PUSH和POP指令 110 5.1.3 本節(jié)回顧 112 5.2 定義并使用過(guò)程 112 5.2.1 PROC偽指令 112 5.2.2 CALL和RET指令 114 5.2.3 過(guò)程調(diào)用嵌套 115 5.2.4 向過(guò)程傳遞寄存器參數(shù) 116 5.2.5 示例:整數(shù)數(shù)組求和 116 5.2.6 保存和恢復(fù)寄存器 118 5.2.7 本節(jié)回顧 119 5.3 鏈接到外部庫(kù) 119 5.3.1 背景知識(shí) 119 5.3.2 本節(jié)回顧 120 5.4 Irvine32鏈接庫(kù) 120 5.4.1 創(chuàng)建庫(kù)的動(dòng)機(jī) 120 5.4.2 概述 122 5.4.3 過(guò)程詳細(xì)說(shuō)明 123 5.4.4 庫(kù)測(cè)試程序 133 5.4.5 本節(jié)回顧 139 5.5 64位匯編編程 139 5.5.1 Irvine64鏈接庫(kù) 139 5.5.2 調(diào)用64位子程序 140 5.5.3 x64調(diào)用規(guī)范 140 5.5.4 調(diào)用過(guò)程示例 141 5.6 本章小結(jié) 142 5.7 關(guān)鍵術(shù)語(yǔ) 143 5.7.1 術(shù)語(yǔ) 143 5.7.2 指令、運(yùn)算符和偽指令 143 5.8 復(fù)習(xí)題和練習(xí) 143 5.8.1 簡(jiǎn)答題 143 5.8.2 算法基礎(chǔ) 146 5.9 編程練習(xí) 146 第6章 條件處理 148 6.1 條件分支 148 6.2 布爾和比較指令 148 6.2.1 CPU狀態(tài)標(biāo)志 149 6.2.2 AND指令 149 6.2.3 OR指令 150 6.2.4 位映射集 151 6.2.5 XOR指令 152 6.2.6 NOT指令 153 6.2.7 TEST指令 153 6.2.8 CMP指令 154 6.2.9 置位和清除單個(gè)CPU標(biāo)志位 155 6.2.10 64位模式下的布爾指令 155 6.2.11 本節(jié)回顧 156 6.3 條件跳轉(zhuǎn) 156 6.3.1 條件結(jié)構(gòu) 156 6.3.2 Jcond指令 156 6.3.3 條件跳轉(zhuǎn)指令類(lèi)型 157 6.3.4 條件跳轉(zhuǎn)應(yīng)用 159 6.3.5 本節(jié)回顧 163 6.4 條件循環(huán)指令 163 6.4.1 LOOPZ和LOOPE指令 163 6.4.2 LOOPNZ和LOOPNE指令 164 6.4.3 本節(jié)回顧 164 6.5 條件結(jié)構(gòu) 164 6.5.1 塊結(jié)構(gòu)的IF語(yǔ)句 165 6.5.2 復(fù)合表達(dá)式 167 6.5.3 WHILE循環(huán) 168 6.5.4 表驅(qū)動(dòng)選擇 169 6.5.5 本節(jié)回顧 171 6.6 應(yīng)用:有限狀態(tài)機(jī) 172 6.6.1 驗(yàn)證輸入字符串 172 6.6.2 驗(yàn)證有符號(hào)整數(shù) 172 6.6.3 本節(jié)回顧 176 6.7 條件控制流偽指令 176 ……
你還可能感興趣
我要評(píng)論
|