書[0名0]: | 匯編語言:基於x86處理器(原書[0第0]7版)|4934543 |
圖書定價: | 99元 |
圖書作者: | [美]基普 · 歐文(Kip Irvine) |
齣版社: | 機械工業齣版社 |
齣版日期: | 2016/4/1 0:00:00 |
ISBN號: | 9787111530367 |
開本: | 16開 |
頁數: | 547 |
版次: | 1-1 |
作者簡介 |
基普·歐文(Kip Irvine)佛羅裏達[0國0]際[0大0][0學0]高級講師,教授計算機相關的課程。 著有多本編程教材,被翻譯成多[0國0]語言,涵蓋的主題如匯編語言、C++、Visual Basic和COBOL。 |
內容簡介 |
本書是匯編語言課程的經典教材,係統介紹x86和Intel64處理器的匯編語言編程與架構。前9章為匯編語言的核心概念,包括:匯編語言基礎,x86處理器架構,數據傳送、尋址和算術運算,過程,條件處理,整數運算,高級過程,以及字符串和數組。後4章介紹結構和宏、MS-Windows編程、浮點數處理和指令編碼,以及高級語言接口。 本書內容翔實,案例豐富,[0極0]具邏輯性和係統性,不僅可作為匯編語言課程的教材,還可作為計算機係統基礎和體係結構基礎方麵的教材。 |
目錄 |
齣版者的話 譯者序 前言 [0第0]1章 基本概念 1 1.1 歡迎來到匯編語言的世界 1 1.1.1 讀者可能[0會0]問的問題 2 1.1.2 匯編語言的應用 4 1.1.3 本節迴顧 5 1.2 虛擬機概念 5 1.3 數據錶示 7 1.3.1 二進製整數 7 1.3.2 二進製加[0法0] 8 1.3.3 整數存儲[0大0]小 9 1.3.4 十六進製整數 10 1.3.5 十六進製加[0法0] 11 1.3.6 有符號二進製整數 12 1.3.7 二進製減[0法0] 13 1.3.8 字符存儲 14 1.3.9 本節迴顧 15 1.4 布爾錶達式 16 1.4.1 布爾函數真值錶 18 1.4.2 本節迴顧 18 1.5 本章小結 19 1.6 關鍵術語 19 1.7 復習題和練習 20 1.7.1 簡答題 20 1.7.2 算[0法0]基礎 21 [0第0]2章 x86處理器架構 23 2.1 一般概念 23 2.1.1 基本微機設計 23 2.1.2 指令執行周期 24 2.1.3 讀取內存 25 2.1.4 加載並執行程序 26 2.1.5 本節迴顧 26 2.2 32位x86處理器 27 2.2.1 操作模式 27 2.2.2 基本執行環境 27 2.2.3 x86內存管理 30 2.2.4 本節迴顧 30 2.3 64位x86-64處理器 30 2.3.1 64位操作模式 31 2.3.2 基本64位執行環境 31 2.4 典型x86計算機組件 32 2.4.1 主闆 32 2.4.2 內存 34 2.4.3 本節迴顧 34 2.5 輸入輸齣係統 34 2.5.1 I/O訪問層次 34 2.5.2 本節迴顧 36 2.6 本章小結 36 2.7 關鍵術語 37 2.8 復習題 38 [0第0]3章 匯編語言基礎 39 3.1 基本語言元素 39 3.1.1 個匯編語言程序 39 3.1.2 整數常量 40 3.1.3 整型常量錶達式 41 3.1.4 實數常量 41 3.1.5 字符常量 42 3.1.6 字符串常量 42 3.1.7 保留字 42 3.1.8 標識符 43 3.1.9 僞指令 43 3.1.10 指令 44 3.1.11 本節迴顧 46 3.2 示例:整數加減[0法0] 46 3.2.1 AddTwo程序 46 3.2.2 運行和調試AddTwo程序 48 3.2.3 程序模闆 52 3.2.4 本節迴顧 52 3.3 匯編、鏈接和運行程序 53 3.3.1 匯編–鏈接–執行周期 53 3.3.2 列錶文件 53 3.3.3 本節迴顧 55 3.4 定義數據 55 3.4.1 內部數據類型 55 3.4.2 數據定義語句 55 3.4.3 嚮AddTwo程序添加一個變量 56 3.4.4 定義BYTE和SBYTE數據 57 3.4.5 定義WORD和SWORD數據 59 3.4.6 定義DWORD和SDWORD數據 59 3.4.7 定義QWORD數據 60 3.4.8 定義壓縮BCD(TBYTE)數據 60 3.4.9 定義浮點類型 61 3.4.10 變量加[0法0]程序 61 3.4.11 小端順序 62 3.4.12 聲明未初始化數據 62 3.4.13 本節迴顧 63 3.5 符號常量 63 3.5.1 等號僞指令 63 3.5.2 計算數組和字符串的[0大0]小 64 3.5.3 EQU僞指令 65 3.5.4 TEXTEQU僞指令 66 3.5.5 本節迴顧 66 3.6 64位編程 67 3.7 本章小結 68 3.8 關鍵術語 69 3.8.1 術語 69 3.8.2 指令、運算符和僞指令 70 3.9 復習題和練習 70 3.9.1 簡答題 70 3.9.2 算[0法0]基礎 71 3.10 編程練習 71 [0第0]4章 數據傳送、尋址和算術運算 73 4.1 數據傳送指令 73 4.1.1 引言 73 4.1.2 操作數類型 73 4.1.3 直接內存操作數 74 4.1.4 MOV指令 75 4.1.5 整數的全零/符號擴展 76 4.1.6 LAHF和SAHF指令 77 4.1.7 XCHG指令 78 4.1.8 直接–偏移量操作數 78 4.1.9 示例程序(Moves) 79 4.1.10 本節迴顧 80 4.2 加[0法0]和減[0法0] 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 執行算術錶達式 82 4.2.6 加減[0法0]影響的標誌位 82 4.2.7 示例程序(AddSubTest) 85 4.2.8 本節迴顧 86 4.3 與數據相關的運算符和僞指令 87 4.3.1 OFFSET運算符 87 4.3.2 ALIGN僞指令 88 4.3.3 PTR運算符 88 4.3.4 TYPE運算符 89 4.3.5 LENGTHOF運算符 89 4.3.6 SIZEOF運算符 90 4.3.7 LABEL僞指令 90 4.3.8 本節迴顧 90 4.4 間接尋址 91 4.4.1 間接操作數 91 4.4.2 數組 91 4.4.3 變址操作數 92 4.4.4 指針 93 4.4.5 本節迴顧 95 4.5 JMP和LOOP指令 95 4.5.1 JMP指令 96 4.5.2 LOOP指令 96 4.5.3 在Visual Studio調試器中顯示數組 97 4.5.4 整數數組求和 98 4.5.5 復製字符串 98 4.5.6 本節迴顧 99 4.6 64位編程 99 4.6.1 MOV指令 99 4.6.2 64位的SumArray程序 100 4.6.3 加[0法0]和減[0法0] 101 4.6.4 本節迴顧 102 4.7 本章小結 102 4.8 關鍵術語 104 4.8.1 術語 104 4.8.2 指令、運算符和僞指令 104 4.9 復習題和練習 104 4.9.1 簡答題 104 4.9.2 算[0法0]基礎 106 4.10 編程練習 107 [0第0]5章 過程 108 5.1 堆棧操作 108 5.1.1 運行時堆棧(32位模式) 108 5.1.2 PUSH和POP指令 110 5.1.3 本節迴顧 112 5.2 定義並使用過程 112 5.2.1 PROC僞指令 112 5.2.2 CALL和RET指令 114 5.2.3 過程調用嵌套 115 5.2.4 嚮過程傳遞寄存器參數 116 5.2.5 示例:整數數組求和 116 5.2.6 保存和恢復寄存器 118 5.2.7 本節迴顧 119 5.3 鏈接到外部庫 119 5.3.1 背景[0知0]識 119 5.3.2 本節迴顧 120 5.4 Irvine32鏈接庫 120 5.4.1 創建庫的動機 120 5.4.2 概述 122 5.4.3 過程詳細說明 123 5.4.4 庫測試程序 133 5.4.5 本節迴顧 139 5.5 64位匯編編程 139 5.5.1 Irvine64鏈接庫 139 5.5.2 調用64位子程序 140 5.5.3 x64調用規範 140 5.5.4 調用過程示例 141 5.6 本章小結 142 5.7 關鍵術語 143 5.7.1 術語 143 5.7.2 指令、運算符和僞指令 143 5.8 復習題和練習 143 5.8.1 簡答題 143 5.8.2 算[0法0]基礎 146 5.9 編程練習 146 [0第0]6章 條件處理 148 6.1 條件分支 148 6.2 布爾和比較指令 148 6.2.1 CPU狀態標誌 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 置位和清除單個CPU標誌位 155 6.2.10 64位模式下的布爾指令 155 6.2.11 本節迴顧 156 6.3 條件跳轉 156 6.3.1 條件結構 156 6.3.2 Jcond指令 156 6.3.3 條件跳轉指令類型 157 6.3.4 條件跳轉應用 159 6.3.5 本節迴顧 163 6.4 條件循環指令 163 6.4.1 LOOPZ和LOOPE指令 163 6.4.2 LOOPNZ和LOOPNE指令 164 6.4.3 本節迴顧 164 6.5 條件結構 164 6.5.1 塊結構的IF語句 165 6.5.2 復閤錶達式 167 6.5.3 WHILE循環 168 6.5.4 錶驅動選擇 169 6.5.5 本節迴顧 171 6.6 應用:有限狀態機 172 6.6.1 驗證輸入字符串 172 6.6.2 驗證有符號整數 172 6.6.3 本節迴顧 176 6.7 條件控製流僞指令 176 6.7.1 新建IF語句 177 6.7.2 有符號數和無符號數的比較 178 6.7.3 復閤錶達式 179 6.7.4 用.REPEAT和.WHILE創建循環 181 6.8 本章小結 182 6.9 關鍵術語 183 6.9.1 術語 183 6.9.2 指令、運算符和僞指令 184 6.10 復習題和練習 184 6.10.1 簡答題 184 6.10.2 算[0法0]基礎 186 6.11 編程練習 187 6.11.1 測試代碼的建議 187 6.11.2 習題 188 [0第0]7章 整數運算 191 7.1 移位和循環移位指令 191 7.1.1 邏輯移位和算術移位 191 7.1.2 SHL指令 192 7.1.3 SHR指令 193 7.1.4 SAL和SAR指令 193 7.1.5 ROL指令 194 7.1.6 ROR指令 195 7.1.7 RCL和RCR指令 195 7.1.8 有符號數溢齣 196 7.1.9 SHLD/SHRD指令 196 7.1.10 本節迴顧 198 7.2 移位和循環移位的應用 198 7.2.1 多個[0[0雙0]0]字的移位 198 7.2.2 二進製乘[0法0] 199 7.2.3 顯示二進製位 200 7.2.4 提取文件日期字段 200 7.2.5 本節迴顧 201 7.3 乘[0法0]和除[0法0]指令 201 7.3.1 MUL指令 201 7.3.2 IMUL指令 203 7.3.3 測量程序執行時間 205 7.3.4 DIV指令 207 7.3.5 有符號數除[0法0] 208 7.3.6 實現算術錶達式 211 7.3.7 本節迴顧 212 7.4 擴展加減[0法0] 212 7.4.1 ADC指令 212 7.4.2 擴展加[0法0]示例 213 7.4.3 SBB指令 215 7.4.4 本節迴顧 215 7.5 ASCII和非壓縮十進製運算 216 7.5.1 AAA指令 217 7.5.2 AAS指令 218 7.5.3 AAM指令 218 7.5.4 AAD指令 219 7.5.5 本節迴顧 219 7.6 壓縮十進製運算 219 7.6.1 DAA指令 220 7.6.2 DAS指令 220 7.6.3 本節迴顧 221 7.7 本章小結 221 7.8 關鍵術語 222 7.8.1 術語 222 7.8.2 指令、運算符和僞指令 222 7.9 復習題和練習 222 7.9.1 簡答題 222 7.9.2 算[0法0]基礎 224 7.10 編程練習 225 [0第0]8章 高級過程 227 8.1 引言 227 8.2 堆棧幀 227 8.2.1 堆棧參數 227 8.2.2 寄存器參數的缺點 228 8.2.3 訪問堆棧參數 230 8.2.4 32位調用規範 232 8.2.5 局部變量 233 8.2.6 引用參數 235 8.2.7 LEA指令 235 8.2.8 ENTER和LEAVE指令 236 8.2.9 LOCAL僞指令 238 8.2.10 Microsoft x64調用規範 239 8.2.11 本節迴顧 239 8.3 遞歸 239 8.3.1 遞歸求和 240 8.3.2 計算階乘 241 8.3.3 本節迴顧 246 8.4 INVOKE、ADDR、PROC和PROTO 246 8.4.1 INVOKE僞指令 246 8.4.2 ADDR運算符 247 8.4.3 PROC僞指令 247 8.4.4 PROTO僞指令 250 8.4.5 參數類彆 253 8.4.6 示例:交換兩個整數 253 8.4.7 調試提示 254 8.4.8 WriteStackFrame過程 255 8.4.9 本節迴顧 256 8.5 新建多模塊程序 256 8.5.1 隱藏和導齣過程[0名0] 256 8.5.2 調用外部過程 257 8.5.3 跨模塊使用變量和標號 258 8.5.4 示例:ArraySum程序 259 8.5.5 用Extern新建模塊 259 8.5.6 用INVOKE和PROTO新建模塊 262 8.5.7 本節迴顧 265 8.6 參數的高級用[0法0](可選主題) 265 8.6.1 受USES運算符影響的堆棧 265 8.6.2 嚮堆棧傳遞8位和16位參數 266 8.6.3 傳遞64位參數 267 8.6.4 非[0[0雙0]0]字局部變量 268 8.7 Java字節碼(可選主題) 269 8.7.1 Java虛擬機 269 8.7.2 指令集 270 8.7.3 Java反匯編示例 271 8.7.4 示例:條件分支 273 8.8 本章小結 274 8.9 關鍵術語 275 8.9.1 術語 275 8.9.2 指令、運算符和僞指令 276 8.10 復習題和練習 276 8.10.1 簡答題 276 8.10.2 算[0法0]基礎 276 8.11 編程練習 277 [0第0]9章 字符串和數組 279 9.1 引言 279 9.2 字符串基本指令 279 9.2.1 MOVSB、MOVSW和MOVSD 280 9.2.2 CMPSB、CMPSW和CMPSD 280 9.2.3 SCASB、SCASW和SCASD 281 9.2.4 STOSB、STOSW和STOSD 282 9.2.5 LODSB、LODSW和LODSD 282 9.2.6 本節迴顧 282 9.3 部分字符串過程 283 9.3.1 Str_compare過程 283 9.3.2 Str_length過程 284 9.3.3 Str_copy過程 284 9.3.4 Str_trim過程 285 9.3.5 Str_ucase過程 287 9.3.6 字符串庫演示程序 288 9.3.7 Irivne64庫中的字符串過程 289 9.3.8 本節迴顧 291 9.4 二維數組 291 9.4.1 行列順序 291 9.4.2 基址–變址操作數 292 9.4.3 基址–變址–偏移量操作數 294 9.4.4 64位模式下的基址–變址操作數 294 9.4.5 本節迴顧 295 9.5 整數數組的檢索和排序 295 9.5.1 冒泡排序 295 9.5.2 對半查找 297 9.5.3 本節迴顧 302 9.6 Java字節碼:字符串處理(可選主題) 302 9.7 本章小結 303 9.8 關鍵術語和指令 304 9.9 復習題和練習 304 9.9.1 簡答題 304 9.9.2 算[0法0]基礎 305 9.10 編程練習 305 [0第0]10章 結構和宏 308 10.1 結構 308 10.1.1 定義結構 308 10.1.2 聲明結構變量 309 10.1.3 引用結構變量 310 10.1.4 示例:顯示係統時間 313 10.1.5 結構包含結構 315 10.1.6 示例:醉漢行走 315 10.1.7 聲明和使用聯閤 318 10.1.8 本節迴顧 320 10.2 宏 320 10.2.1 概述 320 10.2.2 定義宏 321 10.2.3 調用宏 322 10.2.4 其他宏特性 323 10.2.5 使用本書的宏庫(僅32位模式) 326 10.2.6 示例程序:封裝器 332 10.2.7 本節迴顧 333 10.3 條件匯編僞指令 333 10.3.1 檢查缺失的參數 333 10.3.2 默認參數初始值設定 334 10.3.3 布爾錶達式 335 10.3.4 IF、ELSE和ENDIF僞指令 335 10.3.5 IFIDN和IFIDNI僞指令 336 10.3.6 示例:矩陣行求和 336 10.3.7 特殊運算符 339 10.3.8 宏函數 342 10.3.9 本節迴顧 343 10.4 定義重復語句塊 344 10.4.1 WHILE僞指令 344 10.4.2 REPEAT僞指令 344 10.4.3 FOR僞指令 345 10.4.4 FORC僞指令 345 10.4.5 示例:鏈錶 346 10.4.6 本節迴顧 347 10.5 本章小結 348 10.6 關鍵術語 349 10.6.1 術語 349 10.6.2 運算符和僞指令 349 10.7 復習題和練習 349 10.7.1 簡答題 349 10.7.2 算[0法0]基礎 350 10.8 編程練習 351 [0第0]11章 MS-Windows編程 354 11.1 Win32控製颱編程 354 11.1.1 背景[0知0]識 354 11.1.2 Win32控製颱函數 357 11.1.3 顯示消息框 359 11.1.4 控製颱輸入 361 11.1.5 控製颱輸齣 366 11.1.6 讀寫文件 368 11.1.7 Irvine32鏈接庫的文件I/O 371 11.1.8 測試文件I/O過程 373 11.1.9 控製颱窗口操作 375 11.1.10 控製光標 378 11.1.11 控製文本顔色 379 11.1.12 時間與日期函數 380 11.1.13 使用64位Windows API 383 11.1.14 本節迴顧 384 11.2 編寫圖形化的Windows應用程序 384 11.2.1 必要的結構 385 11.2.2 MessageBox函數 386 11.2.3 WinMain過程 387 11.2.4 WinProc過程 387 11.2.5 ErrorHandler過程 388 11.2.6 程序清單 388 11.2.7 本節迴顧 391 11.3 動態內存分配 391 11.3.1 HeapTest程序 394 11.3.2 本節迴顧 397 11.4 x86存儲管理 397 11.4.1 綫性地址 398 11.4.2 頁轉換 400 11.4.3 本節迴顧 401 11.5 本章小結 402 11.6 關鍵術語 403 11.7 復習題和練習 403 11.7.1 簡答題 403 11.7.2 算[0法0]基礎 404 11.8 編程練習 404 [0第0]12章 浮點數處理與指令編碼 406 12.1 浮點數二進製錶示 406 12.1.1 IEEE二進製浮點數錶示 406 12.1.2 階碼 407 12.1.3 規格化二進製浮點數 407 12.1.4 新建IEEE錶示 408 12.1.5 十進製小數轉換為二進製實數 409 12.1.6 本節迴顧 411 12.2 浮點單元 411 12.2.1 FPU寄存器棧 411 12.2.2 捨入 413 12.2.3 浮點數異常 414 12.2.4 浮點數指令集 414 12.2.5 算術運算指令 416 12.2.6 比較浮點數值 419 12.2.7 讀寫浮點數值 422 12.2.8 異常同步 423 12.2.9 代碼示例 423 12.2.10 混閤模式運算 425 12.2.11 屏蔽與未屏蔽異常 426 12.2.12 本節迴顧 427 12.3 x86指令編碼 427 12.3.1 指令格式 427 12.3.2 單字節指令 428 12.3.3 立即數送寄存器 428 12.3.4 寄存器模式指令 429 12.3.5 處理器操作數[0大0]小前綴 429 12.3.6 內存模式指令 430 12.3.7 本節迴顧 432 12.4 本章小結 432 12.5 關鍵術語 433 12.6 復習題和練習 434 12.6.1 簡答題 434 12.6.2 算[0法0]基礎 434 12.7 編程練習 435 [0第0]13章 高級語言接口 438 13.1 引言 438 13.1.1 通用規範 438 13.1.2 .MODEL僞指令 439 13.1.3 檢查編譯器生成的代碼 441 13.1.4 本節迴顧 444 13.2 內嵌匯編代碼 444 13.2.1 Visual C++中的__asm僞指令 444 13.2.2 文件加密示例 447 13.2.3 本節迴顧 449 13.3 32位匯編程序與C/C++的鏈接 449 13.3.1 IndexOf示例 450 13.3.2 調用C和C++函數 453 13.3.3 乘[0法0]錶示例 454 13.3.4 調用C庫函數 457 13.3.5 目錄錶程序 459 13.3.6 本節迴顧 461 13.4 本章小結 461 13.5 關鍵術語 462 13.6 復習題 462 13.7 編程練習 462 附錄A MASM參考[0知0]識 464 附錄B x86指令集 483 附錄C “本節迴顧”問題答案 510 索引 527 |
編輯推薦 |
《匯編語言:基於x86處理器(原書[0第0]7版)》由機械工業齣版社齣版。 |
評分
評分
評分
評分
評分
評分
評分
評分
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有