關(guān)于我們
書單推薦
新書推薦
|
匯編語言:基于x86處理器(原書第7版)
本書是匯編語言課程的經(jīng)典教材,系統(tǒng)介紹x86和Intel64處理器的匯編語言編程和架構(gòu)。前9章為匯編語言的核心概念,包括:匯編語言基礎(chǔ),x86處理器架構(gòu),數(shù)據(jù)傳送、尋址和算術(shù)運(yùn)算,過程,條件處理,整數(shù)運(yùn)算,高級過程,以及字符串和數(shù)組。本書為原書第7版,增加了部分實(shí)例程序的討論,補(bǔ)充了更多的復(fù)習(xí)題和關(guān)鍵術(shù)語,介紹了64位編程;還有配套的網(wǎng)上資料,提供完整的程序清單、復(fù)習(xí)題答案和編程練習(xí)的解決方案。
目 錄Assembly Language for x86 Processors, Seventh Edition出版者的話譯者序前言第1章 基本概念 11.1 歡迎來到匯編語言的世界 11.1.1 讀者可能會問的問題 21.1.2 匯編語言的應(yīng)用 41.1.3 本節(jié)回顧 51.2 虛擬機(jī)概念 51.3 數(shù)據(jù)表示 71.3.1 二進(jìn)制整數(shù) 71.3.2 二進(jìn)制加法 81.3.3 整數(shù)存儲大小 91.3.4 十六進(jìn)制整數(shù) 101.3.5 十六進(jìn)制加法 111.3.6 有符號二進(jìn)制整數(shù) 121.3.7 二進(jìn)制減法 131.3.8 字符存儲 141.3.9 本節(jié)回顧 151.4 布爾表達(dá)式 161.4.1 布爾函數(shù)真值表 181.4.2 本節(jié)回顧 181.5 本章小結(jié) 191.6 關(guān)鍵術(shù)語 191.7 復(fù)習(xí)題和練習(xí) 201.7.1 簡答題 201.7.2 算法基礎(chǔ) 21第2章 x86處理器架構(gòu) 232.1 一般概念 232.1.1 基本微機(jī)設(shè)計(jì) 232.1.2 指令執(zhí)行周期 242.1.3 讀取內(nèi)存 252.1.4 加載并執(zhí)行程序 262.1.5 本節(jié)回顧 262.2 32位x86處理器 272.2.1 操作模式 272.2.2 基本執(zhí)行環(huán)境 272.2.3 x86內(nèi)存管理 302.2.4 本節(jié)回顧 302.3 64位x86-64處理器 302.3.1 64位操作模式 312.3.2 基本64位執(zhí)行環(huán)境 312.4 典型x86計(jì)算機(jī)組件 322.4.1 主板 322.4.2 內(nèi)存 342.4.3 本節(jié)回顧 342.5 輸入輸出系統(tǒng) 342.5.1 I/O訪問層次 342.5.2 本節(jié)回顧 362.6 本章小結(jié) 362.7 關(guān)鍵術(shù)語 372.8 復(fù)習(xí)題 38第3章 匯編語言基礎(chǔ) 393.1 基本語言元素 393.1.1 第一個匯編語言程序 393.1.2 整數(shù)常量 403.1.3 整型常量表達(dá)式 413.1.4 實(shí)數(shù)常量 413.1.5 字符常量 423.1.6 字符串常量 423.1.7 保留字 423.1.8 標(biāo)識符 433.1.9 偽指令 433.1.10 指令 443.1.11 本節(jié)回顧 463.2 示例:整數(shù)加減法 463.2.1 AddTwo程序 463.2.2 運(yùn)行和調(diào)試AddTwo程序 483.2.3 程序模板 523.2.4 本節(jié)回顧 523.3 匯編、鏈接和運(yùn)行程序 533.3.1 匯編–鏈接–執(zhí)行周期 533.3.2 列表文件 533.3.3 本節(jié)回顧 553.4 定義數(shù)據(jù) 553.4.1 內(nèi)部數(shù)據(jù)類型 553.4.2 數(shù)據(jù)定義語句 553.4.3 向AddTwo程序添加一個變量 563.4.4 定義BYTE和SBYTE數(shù)據(jù) 573.4.5 定義WORD和SWORD數(shù)據(jù) 593.4.6 定義DWORD和SDWORD數(shù)據(jù) 593.4.7 定義QWORD數(shù)據(jù) 603.4.8 定義壓縮BCD(TBYTE)數(shù)據(jù) 603.4.9 定義浮點(diǎn)類型 613.4.10 變量加法程序 613.4.11 小端順序 623.4.12 聲明未初始化數(shù)據(jù) 623.4.13 本節(jié)回顧 633.5 符號常量 633.5.1 等號偽指令 633.5.2 計(jì)算數(shù)組和字符串的大小 643.5.3 EQU偽指令 653.5.4 TEXTEQU偽指令 663.5.5 本節(jié)回顧 663.6 64位編程 673.7 本章小結(jié) 683.8 關(guān)鍵術(shù)語 693.8.1 術(shù)語 693.8.2 指令、運(yùn)算符和偽指令 703.9 復(fù)習(xí)題和練習(xí) 703.9.1 簡答題 703.9.2 算法基礎(chǔ) 713.10 編程練習(xí) 71第4章 數(shù)據(jù)傳送、尋址和算術(shù)運(yùn)算 734.1 數(shù)據(jù)傳送指令 734.1.1 引言 734.1.2 操作數(shù)類型 734.1.3 直接內(nèi)存操作數(shù) 744.1.4 MOV指令 754.1.5 整數(shù)的全零/符號擴(kuò)展 764.1.6 LAHF和SAHF指令 774.1.7 XCHG指令 784.1.8 直接–偏移量操作數(shù) 784.1.9 示例程序(Moves) 794.1.10 本節(jié)回顧 804.2 加法和減法 814.2.1 INC和DEC指令 814.2.2 ADD指令 814.2.3 SUB指令 814.2.4 NEG指令 824.2.5 執(zhí)行算術(shù)表達(dá)式 824.2.6 加減法影響的標(biāo)志位 824.2.7 示例程序(AddSubTest) 854.2.8 本節(jié)回顧 864.3 與數(shù)據(jù)相關(guān)的運(yùn)算符和偽指令 874.3.1 OFFSET運(yùn)算符 874.3.2 ALIGN偽指令 884.3.3 PTR運(yùn)算符 884.3.4 TYPE運(yùn)算符 894.3.5 LENGTHOF運(yùn)算符 894.3.6 SIZEOF運(yùn)算符 904.3.7 LABEL偽指令 904.3.8 本節(jié)回顧 904.4 間接尋址 914.4.1 間接操作數(shù) 914.4.2 數(shù)組 914.4.3 變址操作數(shù) 924.4.4 指針 934.4.5 本節(jié)回顧 954.5 JMP和LOOP指令 954.5.1 JMP指令 964.5.2 LOOP指令 964.5.3 在Visual Studio調(diào)試器中顯示數(shù)組 974.5.4 整數(shù)數(shù)組求和 984.5.5 復(fù)制字符串 984.5.6 本節(jié)回顧 994.6 64位編程 994.6.1 MOV指令 994.6.2 64位的SumArray程序 1004.6.3 加法和減法 1014.6.4 本節(jié)回顧 1024.7 本章小結(jié) 1024.8 關(guān)鍵術(shù)語 1044.8.1 術(shù)語 1044.8.2 指令、運(yùn)算符和偽指令 1044.9 復(fù)習(xí)題和練習(xí) 1044.9.1 簡答題 1044.9.2 算法基礎(chǔ) 1064.10 編程練習(xí) 107第5章 過程 1085.1 堆棧操作 1085.1.1 運(yùn)行時堆棧(32位模式) 1085.1.2 PUSH和POP指令 1105.1.3 本節(jié)回顧 1125.2 定義并使用過程 1125.2.1 PROC偽指令 1125.2.2 CALL和RET指令 1145.2.3 過程調(diào)用嵌套 1155.2.4 向過程傳遞寄存器參數(shù) 1165.2.5 示例:整數(shù)數(shù)組求和 1165.2.6 保存和恢復(fù)寄存器 1185.2.7 本節(jié)回顧 1195.3 鏈接到外部庫 1195.3.1 背景知識 1195.3.2 本節(jié)回顧 1205.4 Irvine32鏈接庫 1205.4.1 創(chuàng)建庫的動機(jī) 1205.4.2 概述 1225.4.3 過程詳細(xì)說明 1235.4.4 庫測試程序 1335.4.5 本節(jié)回顧 1395.5 64位匯編編程 1395.5.1 Irvine64鏈接庫 1395.5.2 調(diào)用64位子程序 1405.5.3 x64調(diào)用規(guī)范 1405.5.4 調(diào)用過程示例 1415.6 本章小結(jié) 1425.7 關(guān)鍵術(shù)語 1435.7.1 術(shù)語 1435.7.2 指令、運(yùn)算符和偽指令 1435.8 復(fù)習(xí)題和練習(xí) 1435.8.1 簡答題 1435.8.2 算法基礎(chǔ) 1465.9 編程練習(xí) 146第6章 條件處理 1486.1 條件分支 1486.2 布爾和比較指令 1486.2.1 CPU狀態(tài)標(biāo)志 1496.2.2 AND指令 1496.2.3 OR指令 1506.2.4 位映射集 1516.2.5 XOR指令 1526.2.6 NOT指令 1536.2.7 TEST指令 1536.2.8 CMP指令 1546.2.9 置位和清除單個CPU標(biāo)志位 1556.2.10 64位模式下的布爾指令 1556.2.11 本節(jié)回顧 1566.3 條件跳轉(zhuǎn) 1566.3.1 條件結(jié)構(gòu) 1566.3.2 Jcond指令 1566.3.3 條件跳轉(zhuǎn)指令類型 1576.3.4 條件跳轉(zhuǎn)應(yīng)用 1596.3.5 本節(jié)回顧 1636.4 條件循環(huán)指令 1636.4.1 LOOPZ和LOOPE指令 1636.4.2 LOOPNZ和LOOPNE指令 1646.4.3 本節(jié)回顧 1646.5 條件結(jié)構(gòu) 1646.5.1 塊結(jié)構(gòu)的IF語句 1656.5.2 復(fù)合表達(dá)式 1676.5.3 WHILE循環(huán) 1686.5.4 表驅(qū)動選擇 1696.5.5 本節(jié)回顧 1716.6 應(yīng)用:有限狀態(tài)機(jī) 1726.6.1 驗(yàn)證輸入字符串 1726.6.2 驗(yàn)證有符號整數(shù) 1726.6.3 本節(jié)回顧 1766.7 條件控制流偽指令 1766.7.1 新建IF語句 1776.7.2 有符號數(shù)和無符號數(shù)的比較 1786.7.3 復(fù)合表達(dá)式 1796.7.4 用.REPEAT和.WHILE創(chuàng)建循環(huán) 1816.8 本章小結(jié) 1826.9 關(guān)鍵術(shù)語 1836.9.1 術(shù)語 1836.9.2 指令、運(yùn)算符和偽指令 1846.10 復(fù)習(xí)題和練習(xí) 1846.10.1 簡答題 1846.10.2 算法基礎(chǔ) 1866.11 編程練習(xí) 1876.11.1 測試代碼的建議 1876.11.2 習(xí)題 188第7章 整數(shù)運(yùn)算 1917.1 移位和循環(huán)移位指令 1917.1.1 邏輯移位和算術(shù)移位 1917.1.2 SHL指令 1927.1.3 SHR指令 1937.1.4 SAL和SAR指令 1937.1.5 ROL指令 1947.1.6 ROR指令 1957.1.7 RCL和RCR指令 1957.1.8 有符號數(shù)溢出 1967.1.9 SHLD/SHRD指令 1967.1.10 本節(jié)回顧 1987.2 移位和循環(huán)移位的應(yīng)用 1987.2.1 多個雙字的移位 1987.2.2 二進(jìn)制乘法 1997.2.3 顯示二進(jìn)制位 2007.2.4 提取文件日期字段 2007.2.5 本節(jié)回顧 2017.3 乘法和除法指令 2017.3.1 MUL指令 2017.3.2 IMUL指令 2037.3.3 測量程序執(zhí)行時間 2057.3.4 DIV指令 2077.3.5 有符號數(shù)除法 2087.3.6 實(shí)現(xiàn)算術(shù)表達(dá)式 2117.3.7 本節(jié)回顧 2127.4 擴(kuò)展加減法 2127.4.1 ADC指令 2127.4.2 擴(kuò)展加法示例 2137.4.3 SBB指令 2157.4.4 本節(jié)回顧 2157.5 ASCII和非壓縮十進(jìn)制運(yùn)算 2167.5.1 AAA指令 2177.5.2 AAS指令 2187.5.3 AAM指令 2187.5.4 AAD指令 2197.5.5 本節(jié)回顧 2197.6 壓縮十進(jìn)制運(yùn)算 2197.6.1 DAA指令 2207.6.2 DAS指令 2207.6.3 本節(jié)回顧 2217.7 本章小結(jié) 2217.8 關(guān)鍵術(shù)語 2227.8.1 術(shù)語 2227.8.2 指令、運(yùn)算符和偽指令 2227.9 復(fù)習(xí)題和練習(xí) 2227.9.1 簡答題 2227.9.2 算法基礎(chǔ) 2247.10 編程練習(xí) 225第8章 高級過程 2278.1 引言 2278.2 堆棧幀 2278.2.1 堆棧參數(shù) 2278.2.2 寄存器參數(shù)的缺點(diǎn) 2288.2.3 訪問堆棧參數(shù) 2308.2.4 32位調(diào)用規(guī)范 2328.2.5 局部變量 2338.2.6 引用參數(shù) 2358.2.7 LEA指令 2358.2.8 ENTER和LEAVE指令 2368.2.9 LOCAL偽指令 2388.2.10 Microsoft x64調(diào)用規(guī)范 2398.2.11 本節(jié)回顧 2398.3 遞歸 2398.3.1 遞歸求和 2408.3.2 計(jì)算階乘 2418.3.3 本節(jié)回顧 2468.4 INVOKE、ADDR、PROC和PROTO 2468.4.1 INVOKE偽指令 2468.4.2 ADDR運(yùn)算符 2478.4.3 PROC偽指令 2478.4.4 PROTO偽指令 2508.4.5 參數(shù)類別 2538.4.6 示例:交換兩個整數(shù) 2538.4.7 調(diào)試提示 2548.4.8 WriteStackFrame過程 2558.4.9 本節(jié)回顧 2568.5 新建多模塊程序 2568.5.1 隱藏和導(dǎo)出過程名 2568.5.2 調(diào)用外部過程 2578.5.3 跨模塊使用變量和標(biāo)號 2588.5.4 示例:ArraySum程序 2598.5.5 用Extern新建模塊 2598.5.6 用INVOKE和PROTO新建模塊 2628.5.7 本節(jié)回顧 2658.6 參數(shù)的高級用法(可選主題) 2658.6.1 受USES運(yùn)算符影響的堆棧 2658.6.2 向堆棧傳遞8位和16位參數(shù) 2668.6.3 傳遞64位參數(shù) 2678.6.4 非雙字局部變量 2688.7 Java字節(jié)碼(可選主題) 2698.7.1 Java虛擬機(jī) 2698.7.2 指令集 2708.7.3 Java反匯編示例 2718.7.4 示例:條件分支 2738.8 本章小結(jié) 2748.9 關(guān)鍵術(shù)語 2758.9.1 術(shù)語 2758.9.2 指令、運(yùn)算符和偽指令 2768.10 復(fù)習(xí)題和練習(xí) 2768.10.1 簡答題 2768.10.2 算法基礎(chǔ) 2768.11 編程練習(xí) 277第9章 字符串和數(shù)組 2799.1 引言 2799.2 字符串基本指令 2799.2.1 MOVSB、MOVSW和MOVSD 2809.2.2 CMPSB、CMPSW和CMPSD 2809.2.3 SCASB、SCASW和SCASD 2819.2.4 STOSB、STOSW和STOSD 2829.2.5 LODSB、LODSW和LODSD 2829.2.6 本節(jié)回顧 2829.3 部分字符串過程 2839.3.1 Str_compare過程 2839.3.2 Str_length過程 2849.3.3 Str_copy過程 2849.3.4 Str_trim過程 2859.3.5 Str_ucase過程 2879.3.6 字符串庫演示程序 2889.3.7 Irivne64庫中的字符串過程 2899.3.8 本節(jié)回顧 2919.4 二維數(shù)組 2919.4.1 行列順序 2919.4.2 基址–變址操作數(shù) 2929.4.3 基址–變址–偏移量操作數(shù) 2949.4.4 64位模式下的基址–變址操作數(shù) 2949.4.5 本節(jié)回顧 2959.5 整數(shù)數(shù)組的檢索和排序 2959.5.1 冒泡排序 2959.5.2 對半查找 2979.5.3 本節(jié)回顧 3029.6 Java字節(jié)碼:字符串處理(可選主題) 3029.7 本章小結(jié) 3039.8 關(guān)鍵術(shù)語和指令 3049.9 復(fù)習(xí)題和練習(xí) 3049.9.1 簡答題 3049.9.2 算法基礎(chǔ) 3059.10 編程練習(xí) 305第10章 結(jié)構(gòu)和宏 30810.1 結(jié)構(gòu) 30810.1.1 定義結(jié)構(gòu) 30810.1.2 聲明結(jié)構(gòu)變量 30910.1.3 引用結(jié)構(gòu)變量 31010.1.4 示例:顯示系統(tǒng)時間 31310.1.5 結(jié)構(gòu)包含結(jié)構(gòu) 31510.1.6 示例:醉漢行走 31510.1.7 聲明和使用聯(lián)合 31810.1.8 本節(jié)回顧 32010.2 宏 32010.2.1 概述 32010.2.2 定義宏 32110.2.3 調(diào)用宏 32210.2.4 其他宏特性 32310.2.5 使用本書的宏庫(僅32位模式) 32610.2.6 示例程序:封裝器 33210.2.7 本節(jié)回顧 33310.3 條件匯編偽指令 33310.3.1 檢查缺失的參數(shù) 33310.3.2 默認(rèn)參數(shù)初始值設(shè)定 33410.3.3 布爾表達(dá)式 33510.3.4 IF、ELSE和ENDIF偽指令 33510.3.5 IFIDN和IFIDNI偽指令 33610.3.6 示例:矩陣行求和 33610.3.7 特殊運(yùn)算符 33910.3.8 宏函數(shù) 34210.3.9 本節(jié)回顧 34310.4 定義重復(fù)語句塊 34410.4.1 WHILE偽指令 34410.4.2 REPEAT偽指令 34410.4.3 FOR偽指令 34510.4.4 FORC偽指令 34510.4.5 示例:鏈表 34610.4.6 本節(jié)回顧 34710.5 本章小結(jié) 34810.6 關(guān)鍵術(shù)語 34910.6.1 術(shù)語 34910.6.2 運(yùn)算符和偽指令 34910.7 復(fù)習(xí)題和練習(xí) 34910.7.1 簡答題 34910.7.2 算法基礎(chǔ) 35010.8 編程練習(xí) 351第11章 MS-Windows編程 35411.1 Win32控制臺編程 35411.1.1 背景知識 35411.1.2 Win32控制臺函數(shù) 35711.1.3 顯示消息框 35911.1.4 控制臺輸入 36111.1.5 控制臺輸出 36611.1.6 讀寫文件 36811.1.7 Irvine32鏈接庫的文件I/O 37111.1.8 測試文件I/O過程 37311.1.9 控制臺窗口操作 37511.1.10 控制光標(biāo) 37811.1.11 控制文本顏色 37911.1.12 時間與日期函數(shù) 38011.1.13 使用64位Windows API 38311.1.14 本節(jié)回顧 38411.2 編寫圖形化的Windows應(yīng)用程序 38411.2.1 必要的結(jié)構(gòu) 38511.2.2 MessageBox函數(shù) 38611.2.3 WinMain過程 38711.2.4 WinProc過程 38711.2.5 ErrorHandler過程 38811.2.6 程序清單 38811.2.7 本節(jié)回顧 39111.3 動態(tài)內(nèi)存分配 39111.3.1 HeapTest程序 39411.3.2 本節(jié)回顧 39711.4 x86存儲管理 39711.4.1 線性地址 39811.4.2 頁轉(zhuǎn)換 40011.4.3 本節(jié)回顧 40111.5 本章小結(jié) 40211.6 關(guān)鍵術(shù)語 40311.7 復(fù)習(xí)題和練習(xí) 40311.7.1 簡答題 40311.7.2 算法基礎(chǔ) 40411.8 編程練習(xí) 404第12章 浮點(diǎn)數(shù)處理與指令編碼 40612.1 浮點(diǎn)數(shù)二進(jìn)制表示 40612.1.1 IEEE二進(jìn)制浮點(diǎn)數(shù)表示 40612.1.2 階碼 40712.1.3 規(guī)格化二進(jìn)制浮點(diǎn)數(shù) 40712.1.4 新建IEEE表示 40812.1.5 十進(jìn)制小數(shù)轉(zhuǎn)換為二進(jìn)制實(shí)數(shù) 40912.1.6 本節(jié)回顧 41112.2 浮點(diǎn)單元 41112.2.1 FPU寄存器棧 41112.2.2 舍入 41312.2.3 浮點(diǎn)數(shù)異常 41412.2.4 浮點(diǎn)數(shù)指令集 41412.2.5 算術(shù)運(yùn)算指令 41612.2.6 比較浮點(diǎn)數(shù)值 41912.2.7 讀寫浮點(diǎn)數(shù)值 42212.2.8 異常同步 42312.2.9 代碼示例 42312.2.10 混合模式運(yùn)算 42512.2.11 屏蔽與未屏蔽異常 42612.2.12 本節(jié)回顧 42712.3 x86指令編碼 42712.3.1 指令格式 42712.3.2 單字節(jié)指令 42812.3.3 立即數(shù)送寄存器 42812.3.4 寄存器模式指令 42912.3.5 處理器操作數(shù)大小前綴 42912.3.6 內(nèi)存模式指令 43012.3.7 本節(jié)回顧 43212.4 本章小結(jié) 43212.5 關(guān)鍵術(shù)語 43312.6 復(fù)習(xí)題和練習(xí) 43412.6.1 簡答題 43412.6.2 算法基礎(chǔ) 43412.7 編程練習(xí) 435第13章 高級語言接口 43813.1 引言 43813.1.1 通用規(guī)范 43813.1.2 .MODEL偽指令 43913.1.3 檢查編譯器生成的代碼 44113.1.4 本節(jié)回顧 44413.2 內(nèi)嵌匯編代碼 44413.2.1 Visual C 中的__asm偽指令 44413.2.2 文件加密示例 44713.2.3 本節(jié)回顧 44913.3 32位匯編程序與C/C 的鏈接 44913.3.1 IndexOf示例 45013.3.2 調(diào)用C和C 函數(shù) 45313.3.3 乘法表示例 45413.3.4 調(diào)用C庫函數(shù) 45713.3.5 目錄表程序 45913.3.6 本節(jié)回顧 46113.4 本章小結(jié) 46113.5 關(guān)鍵術(shù)語 46213.6 復(fù)習(xí)題 46213.7 編程練習(xí) 462附錄A MASM參考知識 464附錄B x86指令集 483附錄C “本節(jié)回顧”問題答案 510索引 527
你還可能感興趣
我要評論
|