Win32彙編語言程式設計

Win32彙編語言程式設計

《Win32彙編語言程式設計》是2017年8月清華大學出版社出版的圖書,作者是田民格、秦彩傑、呂良智。

基本介紹

  • 中文名:Win32彙編語言程式設計
  • 作者:田民格、秦彩傑、呂良智
  • 出版時間:2017年8月
  • 出版社:清華大學出版社
  • ISBN:9787302476948
  • 定價:45 元
內容簡介,圖書目錄,

內容簡介

本書共分為9章,具體介紹了彙編語言基礎知識、Win32彙編語言基本組成、Win32彙編語言的編譯運行、CPU指令系統、FPU指令系統、選擇結構程式設計、循環結構程式設計、模組化程式設計和吾愛破解軟體使用簡介等內容。先詳細介紹了彙編語言程式設計中要用到的相關理論基礎和計算機的組成與工作原理,如數值與字元的表示方法、存儲體系結構與工作原理等;再全面介紹了32位CPU指令與浮點指令;最後詳盡介紹了彙編語言程式設計的方法,使讀者可以把更多的精力用於彙編的程式設計上。本書力爭做到,初學者用C語言能實現的功能,用本書的32位彙編語言也能實現。
本書所有例子的源程式都是完整的,並有詳細的注釋,且都能在Windows XP和Windows 7環境上編譯運行通過,特別適合初學者。本書有配套的考試系統和相應的題庫,既可作為測評的標準化試題(單項選擇題、多項選擇題、判斷題和填空題),又可作為測評的程式設計題(程式改錯題、程式填空題和程式設計題),可按程式功能要求進行測評,也可按標準答案源程式的相似度進行模糊測評。
本書可作為套用型本科院校計算機類專業《Win32彙編語言程式設計》的教材,也可作為《計算機組成原理與彙編語言(Win32)》的教材,適合既要求有一定理論知識,又要求突出實踐的院校,尤其適合強調提高編程能力的院校和讀者。

圖書目錄

第1章 彙編語言基礎知識
1.1 計數制 1
1.1.1 十進制(Decimal) 1
1.1.2 二進制(Binary) 1
1.1.3 八進制(Octal) 2
1.1.4 十六進制(HexaDecimal) 2
1.2 進制數間的轉換 3
1.2.2 十進制轉八進制和十六進制 4
1.2.3 十進制轉二進制加法口算方法 4
1.2.4 十進制轉二進制減法口算方法 5
1.2.5 十進制轉二進制其他口算方法 6
1.3 計算機計量單位 6
1.3.1 計算機存儲容量計量單位 6
1.3.2 計算機時鐘周期計量單位 6
1.4 數值數據的表示 7
1.4.1 無符號整數的表示 7
1.4.2 有符號整數的表示 7
1.4.3 移碼 8
1.4.4 BCD碼 9
1.4.5 浮點數 9
1.5 字元數據的表示 12
1.5.1 ASCII碼 12
1.5.2 機內碼 12
1.5.3 Unicode 13
1.5.4 UTF-8 14
習題1 14
第2章 Win32彙編語言基本組成
2.1 程式結構 16
2.1.1 處理器選擇偽指令 17
2.1.2 .model偽指令 18
2.1.3 指明是否區分大小寫 18
2.1.4 要引用的頭檔案和庫檔案 18
2.1.5 函式原型PROTO聲明 19
2.1.6 函式原型EXTRN聲明 19
2.1.7 變數的定義及使用 20
2.1.8 數據段和代碼段的定義 21
2.1.9 注釋 22
2.1.10 指令、標號和分行 22
2.1.11 invoke偽指令調用函式 23
2.1.12 Call指令調用函式 23
2.1.13 函式調用返回值 24
2.1.14 函式的定義 24
2.1.15 局部變數的定義 26
2.1.16 程式結束 27
2.1.17 彙編結束 27
2.2 數據類型 27
2.2.1 整數 27
2.2.2 整數常量表達式 28
2.2.3 浮點數 30
2.2.4 字元和字元串 33
2.2.5 結構體 34
習題2 36
第3章 Win32彙編語言的編譯運行
3.1 配置編譯連結環境 40
3.1.1 配置VC6.0環境 41
3.1.2 MASM32的安裝 41
3.1.3 配置MASM32環境 44
3.1.4 通過註冊表配置VC和MASM32環境 44
3.2 命令提示符下編譯連結和運行 44
3.3 VC環境下編譯連結和運行 46
3.4 C/C++嵌入彙編指令 48
3.4.1 彙編指令訪問C整型變數 48
3.4.2 彙編指令讀取C整型數組元素 49
3.4.3 彙編指令寫入C字元數組 50
3.5 C程式反彙編生成彙編源程式 51
3.5.1 C程式編譯時生成彙編語言源程式 51
3.5.2 修改C程式反彙編生成的彙編源程式 52
習題3 55
第4章 CPU指令系統
4.1 系統結構 58
4.2 80386微處理器結構 59
4.3 CPU暫存器 61
4.3.1 16位暫存器組 61
4.3.2 32位暫存器組 61
4.3.3 標誌暫存器EFlags 62
4.4 80X86處理器工作模式 64
4.5 存儲器 65
4.6 運算元定址方式 67
4.7 數據傳送類指令 71
4.7.1 通用數據傳送MOV/MOV[SZ]X 71
4.7.2 數據交換XCHG 73
4.7.3 位元組查錶轉換XLAT[B] 75
4.7.4 位元組反向存儲BSWAP 76
4.7.5 入棧PUSH/PUSHA[D] 76
4.7.6 出棧POP/POPA[D] 77
4.7.7 取地址LEA/L[DEFGS]S 77
4.7.8 EFlags低8位與AH傳送LAHF/SAHF 78
4.7.9 EFlags出入棧PUSHF[D]/POPF[D] 79
4.7.10 進位位CF操作CLC/STC/CMC 79
4.7.11 方向位DF操作CLD/STD 79
4.7.12 中斷允許位IF操作CLI/STI 79
4.8 整數算術運算指令 79
4.8.1 加法ADD/ADC/INC/XADD 80
4.8.2 減法SUB/SBB/DEC/NEG 82
4.8.3 乘法MUL/IMUL 82
4.8.4 除法DIV/IDIV 83
4.8.5 符號擴展CBW/CWD/CDQ 85
4.8.6 整數比較CMP/CMPXCHG[8B] 86
4.9 調整指令(實現大數運算) 87
4.9.1 數字字元加法調整AAA 87
4.9.2 數字字元減法調整AAS 89
4.9.3 二進制編碼調整為BCD碼AAM 90
4.9.4 BCD碼調整為二進制編碼AAD 90
4.9.5 BCD碼加法調整DAA 91
4.9.6 BCD碼減法調整DAS 92
4.10 邏輯運算指令 93
4.10.1 邏輯與操作AND 93
4.10.2 邏輯或操作OR 94
4.10.3 邏輯非操作NOT 94
4.10.4 邏輯異或操作XOR 94
4.10.5 邏輯比較測試TEST 95
4.11 位操作指令 96
4.11.1 算術移位SAL/SAR 96
4.11.2 邏輯移位SHL/SHR 97
4.11.3 雙精度移位SHLD/SHRD 98
4.11.4 不帶進位循環移位ROL/ROR 100
4.11.5 帶進位循環移位RCL/RCR 100
4.11.6 位掃描BSF/BSR 101
4.11.7 第i位操作BT[CRS] 103
4.12 串操作指令 104
4.12.1 重複串操作REP[E|Z|NE|NZ] 105
4.12.2 移串操作MOVS[B|W|D] 106
4.12.3 取串操作LODS[B|W|D] 108
4.12.4 存串操作STOS[B|W|D] 109
4.12.5 輸入串操作INS[B|W|D] 110
4.12.6 輸出串操作OUTS[B|W|D] 111
4.12.7 串掃描操作SCAS[B|W|D] 111
4.12.8 串比較操作CMPS[B|W|D] 112
4.13 CPU控制指令 114
4.13.1 空操作指令NOP 114
4.13.2 等待指令WAIT 115
4.13.3 暫停指令HLT 115
4.13.4 封鎖數據指令LOCK 115
4.13.5 獲得CPU信息CPUID 115
4.13.6 讀時間戳計數器RDTSC 116
習題4 117
第5章 FPU指令系統
5.1 FPU暫存器 127
5.1.1 浮點數據暫存器 127
5.1.2 浮點標記暫存器 128
5.1.3 浮點狀態暫存器 128
5.1.4 浮點控制暫存器 130
5.2 FPU指令系統的約定 131
5.3 實數傳送指令 132
5.4 實數常量載入指令 136
5.5 實數比較指令 136
5.6 實數加法指令 143
5.7 實數減法指令 144
5.8 實數乘法指令 146
5.9 實數除法指令 147
5.10 算術指令 148
5.11 FPU控制指令 161
5.11.1 初始化FPU操作F[N]INIT 161
5.11.2 保存狀態字F[N]STSW 161
5.11.3 保存控制字F[N]STCW 161
5.11.4 載入控制字FLDCW 161
5.11.5 清除異常F[N]CLEX 161
5.11.6 保存環境F[N]STENV 161
5.11.7 載入環境FLDENV 163
5.11.8 存環境與數據F[N]SAVE 163
5.11.9 讀環境與數據FRSTOR 165
5.11.10 增加FPU棧指針指令FINCSTP 166
5.11.11 減少FPU棧指針FDECSTP 166
5.11.12 st(i)清空FFREE st(i) 167
5.11.13 FPU空操作FNOP 168
5.11.14 同步FPU與CPU指令[F]WAIT 168
習題5 168
第6章 選擇結構程式設計
6.1 .IF偽指令實現雙分支選擇 171
6.2 .IF….ELSEIF偽指令實現多分支選擇 177
6.3 JMP和Jcc轉移指令 179
6.4 測試條件轉存指令SETcc 185
6.5 浮點數的大小比較 187
6.6 散轉程式設計 190
習題6 195
第7章 循環結構程式設計
7.1 當循環偽指令.while 200
7.2 重複偽指令.repeat 202
7.3 退出偽指令.break 205
7.4 短路偽指令.continue 205
7.5 循環指令LOOP 206
7.6 ECX為零轉移指令JECXZ 211
7.7 LOOP/JECXZ循環指令存在的問題 212
習題7 214
第8章 模組化程式設計
8.1 子程式的定義 223
8.1.1 子程式的屬性 224
8.1.2 局部變數的定義 224
8.2 子程式的調用與返回 225
8.2.1 子程式調用CALL或INVOKE 225
8.2.2 返回指令RET 226
8.3 不同數據類型作形參時的傳遞方法 226
8.3.1 整數參數的傳遞 226
8.3.2 字元參數的傳遞 227
8.3.3 整型數組參數的傳遞 228
8.3.4 字元串參數的傳遞 231
8.3.5 雙精度浮點數參數的傳遞 232
8.4 彙編語言遞歸函式求累加和 233
8.4.1 C語言實現遞歸函式求累加和 233
8.4.2 彙編語言實現遞歸函式求累加和 234
8.4.3 C程式反彙編得到的源程式實現遞歸求和 236
8.5 C程式調用彙編語言的子程式 238
8.5.1 C程式調用彙編語言子程式的方式 238
8.5.2 C整型參數不同調用方式傳入彙編 239
8.5.3 C整型數組參數傳入彙編 241
8.5.4 C字元數組參數傳入彙編 242
8.5.5 C調用彙編語言實現函式重載 242
習題8 243
第9章 吾愛破解軟體使用簡介
9.1 吾愛破解軟體主執行緒模組界面 248
9.2 如何用吾愛破解軟體找到登錄軟體密碼 249
9.3 用吾愛破解軟體修改執行檔並保存 250
附錄A 252
參考文獻 255

相關詞條

熱門詞條

聯絡我們