匯編語言的編程藝術(shù)第2版是目前講解匯編語言最經(jīng)典的圖書,作者海德(Randall Hyde),馬躍,包戰(zhàn)翻譯,它詳細(xì)的介紹了編輯、編譯和運行HLA程序,聲明和使用常量、標(biāo)量變量、指針、數(shù)組、結(jié)構(gòu)、聯(lián)合和命名空間,轉(zhuǎn)換算術(shù)表達(dá)式,轉(zhuǎn)換高級控制結(jié)構(gòu)等內(nèi)容。同時第2版本還新增了反映HLA最新變化的內(nèi)容,并介紹了如何支持Linux、Mac OSX和FreeBSD,為非匯編程序員提供了全面、易讀和循序漸進(jìn)的32位x86匯編語言的介紹,是學(xué)習(xí)匯編語言最好的教程。
匯編語言的編程藝術(shù)第2版內(nèi)容簡介
匯編語言是一種低級編程語言,只比計算機本身的機器語言高一級。雖然匯編語言經(jīng)常用于編寫設(shè)備驅(qū)動程序、模擬器和視頻游戲,但是許多程序員認(rèn)為匯編語言的語法不太友好,很難學(xué)習(xí)和使用。
1996年以來,randall hyde的《匯編語言的編程藝術(shù)》一書為非匯編程序員提供了全面、易讀和循序漸進(jìn)的32位x86匯編語言的介紹。hyde使用的主要教學(xué)工具是高級語言匯編器(highlevelassembler,hla),其中提供了許多高級語言(如c、c++和java)的功能,以幫助讀者快速掌握匯編語言的基本概念。hla在允許匯編語言程序員編寫真正低級代碼的同時,也使他們能夠利用高級語言編程的優(yōu)勢。
通過閱讀《匯編語言的編程藝術(shù)第2版》,讀者可以學(xué)到計算機科學(xué)的底層理論基礎(chǔ),并將所學(xué)知識轉(zhuǎn)化為真正可以運行的代碼。
匯編語言的編程藝術(shù)第2版pdf目錄
第1章 進(jìn)入?yún)R編語言的世界 1
1.1 hla程序的結(jié)構(gòu) 1
1.2 運行第一個hla程序 3
1.3 基本的hla數(shù)據(jù)聲明 4
1.4 布爾值 6
1.5 字符值 6
1.6 intel 80x86 cpu系列簡介 6
1.7 存儲子系統(tǒng) 9
1.8 基本的機器指令 11
1.9 基本的hla控制結(jié)構(gòu) 14
1.9.1 hla語句中的布爾表達(dá)式 14
1.9.2 hla中的if..then..elseif..else..endif語句 16
1.9.3 布爾表達(dá)式中的邏輯與、邏輯或以及邏輯非 18
1.9.4 while..endwhile語句 20
1.9.5 for..endfor語句 20
1.9.6 repeat..until語句 21
1.9.7 break和breakif語句 22
1.9.8 forever..endfor語句 22
1.9.9 try..exception..endtry語句 23
1.10 hla標(biāo)準(zhǔn)庫入門 26
1.10.1 stdio模塊中的預(yù)定義常量 28
1.10.2 標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出 29
1.10.3 stdout.newln例程 29
1.10.4 stdout.putix例程 29
1.10.5 stdout.putixsize例程 29
1.10.6 stdout.put例程 31
1.10.7 stdin.getc例程 32
1.10.8 stdin.getix例程 33
1.10.9 stdin.readln和stdin.flushinput例程 34
1.10.10 stdin.get例程 35
1.11 關(guān)于try..endtry的其他細(xì)節(jié) 35
1.11.1 try..endtry嵌套語句 36
1.11.2 try..endtry語句中不受保護(hù)的子句 38
1.11.3 try..endtry語句中的anyexception子句 40
1.11.4 寄存器與try..endtry語句 41
1.12 高級匯編語言與低級匯編語言的比較 42
1.13 更多信息 43
第2章 數(shù)據(jù)表示 45
2.1 數(shù)字系統(tǒng) 45
2.1.1 回顧十進(jìn)制系統(tǒng) 45
2.1.2 二進(jìn)制數(shù)字系統(tǒng) 46
2.1.3 二進(jìn)制格式 47
2.2 十六進(jìn)制數(shù)字系統(tǒng) 47
2.3 數(shù)據(jù)結(jié)構(gòu) 49
2.3.1 位 49
2.3.2 半字節(jié) 50
2.3.3 字節(jié) 51
2.3.4 字 52
2.3.5 雙字 53
2.3.6 四字和長字 53
2.4 二進(jìn)制數(shù)和十六進(jìn)制數(shù)的算術(shù)運算 54
2.5 關(guān)于數(shù)字及其表示 55
2.6 位邏輯運算 57
2.7 二進(jìn)制數(shù)和位串的邏輯運算 59
2.8 有符號數(shù)和無符號數(shù) 61
2.9 符號擴展、零擴展、壓縮和飽和 65
2.10 移位和循環(huán)移位 68
2.11 位域和壓縮數(shù)據(jù) 72
2.12 浮點運算簡介 76
2.12.1 ieee浮點格式 79
2.12.2 hla為浮點數(shù)值提供的支持 81
2.13 bcd數(shù)據(jù)表示 84
2.14 字符 85
2.14.1 ascii字符編碼 85
2.14.2 hla對ascii字符提供的支持 88
2.15 unicode字符集 91
2.16 更多信息 92
第3章 存儲器的訪問與結(jié)構(gòu) 93
3.1 80x86的尋址方式 93
3.1.1 80x86寄存器尋址方式 94
3.1.2 80x86的32位存儲器尋址方式 94
3.2 運行時存儲器的結(jié)構(gòu) 100
3.2.1 代碼段 101
3.2.2 靜態(tài)段 102
3.2.3 只讀數(shù)據(jù)段 103
3.2.4 存儲段 103
3.2.5 @nostorage屬性 104
3.2.6 var段 104
3.2.7 程序中聲明段的結(jié)構(gòu) 105
3.3 hla如何為變量分配內(nèi)存 106
3.4 hla對數(shù)據(jù)對齊的支持 107
3.5 地址表達(dá)式 109
3.6 類型強制轉(zhuǎn)換 111
3.7 寄存器類型強制轉(zhuǎn)換 113
3.8 棧段與push和pop指令 114
3.8.1 基本的push指令 114
3.8.2 基本的pop指令 115
3.8.3 用push和pop指令保護(hù)寄存器 116
3.9 棧的lifo數(shù)據(jù)結(jié)構(gòu) 117
3.9.1 其他的push和pop指令 118
3.9.2 不使用出棧而從棧內(nèi)移除數(shù)據(jù) 119
3.10 訪問已入棧而未出棧的數(shù)據(jù) 120
3.11 動態(tài)內(nèi)存分配和堆段 122
3.12 inc和dec指令 125
3.13 獲取存儲器對象的地址 125
3.14 更多信息 126
第4章 常量、變量與數(shù)據(jù)類型 127
4.1 一些額外的指令:intmul、bound、into 127
4.2 hla常量和數(shù)值聲明 131
4.2.1 常量類型 134
4.2.2 字符串和字符字面常量 135
4.2.3 const段中的字符串常量與文本常量 137
4.2.4 常量表達(dá)式 138
4.2.5 hla程序中的多個const段以及它們的順序 140
4.2.6 hla的val段 140
4.2.7 在程序中的任意位置修改val對象 141
4.3 hla的type段 142
4.4 enum和hla枚舉數(shù)據(jù)類型 143
4.5 指針數(shù)據(jù)類型 144
4.5.1 在匯編語言中使用指針 145
4.5.2 在hla中聲明指針 146
4.5.3 指針常量和指針常量表達(dá)式 146
4.5.4 指針變量和動態(tài)內(nèi)存分配 147
4.5.5 指針的常見問題 147
4.6 復(fù)合數(shù)據(jù)類型 151
4.7 字符串 151
4.8 hla字符串 154
4.9 訪問字符串中的字符 159
4.10 hla字符串模塊和其他與字符串相關(guān)的例程 160
4.11 存儲器內(nèi)的轉(zhuǎn)換 170
4.12 字符集 171
4.13 在hla中實現(xiàn)字符集 172
4.14 hla字符集常量和字符集表達(dá)式 173
4.15 hla標(biāo)準(zhǔn)庫對字符集的支持 175
4.16 在hla程序中使用字符集 177
4.17 數(shù)組 178
4.18 在hla程序中聲明數(shù)組 179
4.19 hla數(shù)組常量 180
4.20 訪問一維數(shù)組的元素 181
4.21 數(shù)組排序 182
4.22 多維數(shù)組 183
4.22.1 以行為主排列 184
4.22.2 以列為主排列 187
4.23 多維數(shù)組的存儲空間分配 187
4.24 匯編語言中多維數(shù)組元素的訪問 189
4.25 記錄 190
4.26 記錄常量 192
4.27 記錄數(shù)組 193
4.28 數(shù)組/記錄作為記錄字段 194
4.29 對齊記錄中的字段 197
4.30 記錄指針 198
4.31 聯(lián)合 200
4.32 匿名聯(lián)合 202
4.33 變體類型 203
4.34 命名空間 203
4.35 匯編語言中的動態(tài)數(shù)組 206
4.36 更多信息 208
第5章 過程和單元 209
5.1 過程 209
5.2 機器狀態(tài)的保存 211
5.3 過程的提前返回 215
5.4 局部變量 215
5.5 其他局部和全局符號類型 220
5.6 參數(shù) 220
5.6.1 值傳遞 221
5.6.2 引用傳遞 224
5.7 函數(shù)和函數(shù)的結(jié)果 226
5.7.1 返回函數(shù)結(jié)果 227
5.7.2 hla中的指令合成 227
5.7.3 hla過程的@returns選項 229
5.8 遞歸 231
5.9 過程的向前引用 235
5.10 hla v2.0的過程聲明 236
5.11 過程的底層實現(xiàn)與call指令 236
5.12 過程與棧 238
5.13 活動記錄 240
5.14 標(biāo)準(zhǔn)入口序列 242
5.15 標(biāo)準(zhǔn)出口序列 244
5.16 自動(局部)變量的底層實現(xiàn) 245
5.17 參數(shù)的底層實現(xiàn) 246
5.17.1 在寄存器中傳遞參數(shù) 247
5.17.2 在代碼流中傳遞參數(shù) 249
5.17.3 在棧中傳遞參數(shù) 251
5.18 過程指針 269
5.19 過程參數(shù) 272
5.20 無類型的引用參數(shù) 273
5.21 管理大型程序 274
5.22 #include偽指令 274
5.23 忽略重復(fù)的#include操作 276
5.24 單元與external偽指令 276
5.24.1 偽指令external的行為 280
5.24.2 hla中的頭文件 281
5.25 命名空間污染 282
5.26 更多信息 284
第6章 算術(shù)運算 287
6.1 80x86的整數(shù)運算指令 287
6.1.1 mul和imul指令 287
6.1.2 div和idiv指令 290
6.1.3 cmp指令 292
6.1.4 setcc指令 296
6.1.5 test指令 298
6.2 算術(shù)表達(dá)式 299
6.2.1 簡單賦值 300
6.2.2 簡單表達(dá)式 300
6.2.3 復(fù)雜表達(dá)式 302
6.2.4 可交換運算符 307
6.3 邏輯(布爾)表達(dá)式 308
6.4 機器特性與運算技巧 309
6.4.1 不使用mul、imul或intmul的乘法 310
6.4.2 不使用div或idiv的除法 311
6.4.3 使用and實現(xiàn)模n計數(shù)器 311
6.5 浮點運算 312
6.5.1 fpu寄存器 312
6.5.2 fpu的數(shù)據(jù)類型 317
6.5.3 fpu的指令集 318
6.5.4 fpu的數(shù)據(jù)轉(zhuǎn)移指令 318
6.5.5 換算指令 320
6.5.6 算術(shù)運算指令 322
6.5.7 比較指令 327
6.5.8 常量指令 329
6.5.9 超越指令 329
6.5.10 其他指令 331
6.5.11 整數(shù)操作 332
6.6 將浮點表達(dá)式轉(zhuǎn)換成匯編語言 332
6.6.1 將算術(shù)表達(dá)式轉(zhuǎn)換成后綴表示法 334
6.6.2 將后綴表達(dá)式轉(zhuǎn)換成匯編語言 335
6.7 hla標(biāo)準(zhǔn)庫對浮點算術(shù)運算的支持 336
6.8 更多信息 337
第7章 低級控制結(jié)構(gòu) 339
7.1 低級控制結(jié)構(gòu) 339
7.2 語句標(biāo)號 339
7.3 無條件控制轉(zhuǎn)移(jmp) 341
7.4 條件跳轉(zhuǎn)指令 343
7.5 “中級”控制結(jié)構(gòu):jt和jf 346
7.6 使用匯編語言實現(xiàn)常用控制結(jié)構(gòu) 347
7.7 判定 347
7.7.1 if..then..else序列 348
7.7.2 將hla的if語句翻譯成純匯編語言 351
7.7.3 使用完整布爾求值實現(xiàn)復(fù)雜的if語句 355
7.7.4 短路布爾求值 356
7.7.5 短路布爾求值與完整布爾求值 357
7.7.6 匯編語言中if語句的高效實現(xiàn) 359
7.7.7 switch/case語句 363
7.8 狀態(tài)機和間接跳轉(zhuǎn) 372
7.9 “意大利面條式”代碼 375
7.10 循環(huán) 375
7.10.1 while循環(huán) 376
7.10.2 repeat..until循環(huán) 377
7.10.3 forever..endfor循環(huán) 378
7.10.4 for循環(huán) 378
7.10.5 break和continue語句 379
7.10.6 寄存器的使用與循環(huán) 383
7.11 性能提高 384
7.11.1 將結(jié)束條件判斷放在循環(huán)結(jié)尾 384
7.11.2 反向執(zhí)行循環(huán) 386
7.11.3 循環(huán)不變計算 387
7.11.4 循環(huán)展開 388
7.11.5 歸納變量 389
7.12 hla中的混合控制結(jié)構(gòu) 390
7.13 更多信息 392
第8章 高級算術(shù)運算 393
8.1 多精度操作 393
8.1.1 擴展精度操作的hla標(biāo)準(zhǔn)庫支持 394
8.1.2 多精度加法運算 396
8.1.3 多精度減法運算 398
8.1.4 擴展精度比較操作 399
8.1.5 擴展精度乘法操作 403
8.1.6 擴展精度除法操作 406
8.1.7 擴展精度neg操作 414
8.1.8 擴展精度and操作 415
8.1.9 擴展精度or操作 415
8.1.10 擴展精度xor操作 416
8.1.11 擴展精度not操作 416
8.1.12 擴展精度移位操作 416
8.1.13 擴展精度循環(huán)移位操作 419
8.1.14 擴展精度i/o 420
8.2 對不同長度的操作數(shù)進(jìn)行操作 437
8.3 十進(jìn)制算術(shù)運算 439
8.3.1 字面bcd常量 440
8.3.2 80x86的daa指令和das指令 441
8.3.3 80x86的aaa、aas、aam和aad指令 442
8.3.4 使用fpu的壓縮十進(jìn)制算術(shù)操作 443
8.4 表 445
8.4.1 通過表查找進(jìn)行函數(shù)計算 445
8.4.2 域調(diào)節(jié) 449
8.4.3 產(chǎn)生表 450
8.4.4 表查找的性能 453
8.5 更多信息 453
第9章 宏與hla編譯時語言 455
9.1 編譯時語言 455
9.2 #print和#error語句 457
9.3 編譯時常量和變量 458
9.4 編譯時表達(dá)式和操作符 458
9.5 編譯時函數(shù) 461
9.5.1 類型轉(zhuǎn)換編譯時函數(shù) 462
9.5.2 數(shù)值編譯時函數(shù) 463
9.5.3 字符分類編譯時函數(shù) 463
9.5.4 編譯時字符串函數(shù) 463
9.5.5 編譯時符號信息 464
9.5.6 其他編譯時函數(shù) 465
9.5.7 編譯時文本對象的類型轉(zhuǎn)換 465
9.6 條件編譯(編譯時判定) 467
9.7 重復(fù)編譯(編譯時循環(huán)) 470
9.8 宏(編譯時過程) 473
9.8.1 標(biāo)準(zhǔn)宏 473
9.8.2 宏參數(shù) 475
9.8.3 宏中的局部符號 480
9.8.4 作為編譯時過程的宏 482
9.8.5 使用宏模擬函數(shù)重載 483
9.9 編寫編譯時“程序” 488
9.9.1 在編譯時構(gòu)造數(shù)據(jù)表 488
9.9.2 循環(huán)展開 492
9.10 在不同的源文件中使用宏 493
9.11 更多信息 493
第10章 位操作 495
10.1 位數(shù)據(jù) 495
10.2 位操作指令 496
10.3 作為位累加器的進(jìn)位標(biāo)志 502
10.4 位串的壓縮與解壓縮 503
10.5 接合位組與分布位串 506
10.6 壓縮的位串?dāng)?shù)組 508
10.7 搜索位 510
10.8 位的計數(shù) 512
10.9 倒置位串 515
10.10 合并位串 517
10.11 提取位串 517
10.12 搜索位模式 519
10.13 hla標(biāo)準(zhǔn)庫的位模塊 520
10.14 更多信息 522
第11章 字符串指令 523
11.1 80x86字符串指令 523
11.1.1 字符串指令的操作過程 524
11.1.2 rep/repe/repz和repnz/repne前綴 524
11.1.3 方向標(biāo)志 525
11.1.4 movs指令 527
11.1.5 cmps指令 531
11.1.6 scas指令 534
11.1.7 stos指令 534
11.1.8 lods指令 535
11.1.9 通過lods和stos構(gòu)建復(fù)雜 的字符串函數(shù) 536
11.2 80x86字符串指令的性能 536
11.3 更多信息 536
第12章 類與對象 539
12.1 通用原則 539
12.2 hla中的類 541
12.3 對象 543
12.4 繼承 545
12.5 重寫 546
12.6 虛擬方法與靜態(tài)過程 547
12.7 編寫類方法和過程 548
12.8 對象實現(xiàn) 552
12.8.1 虛擬方法表 554
12.8.2 帶繼承的對象表示 556
12.9 構(gòu)造函數(shù)和對象初始化 560
12.9.1 構(gòu)造函數(shù)中的動態(tài)對象 分配 561
12.9.2 構(gòu)造函數(shù)和繼承 563
12.9.3 構(gòu)造函數(shù)的參數(shù)和過程 重載 566
12.10 析構(gòu)函數(shù) 566
12.11 hla的_initialize_和_finalize_ 字符串 567
12.12 抽象方法 572
12.13 運行時類型信息 574
12.14 調(diào)用基類的方法 576
12.15 更多信息 577
附錄 ascii字符集 579
- 下載地址
發(fā)表評論
0條評論軟件排行榜
熱門推薦
- 得間免費小說電腦版 v5.3.0.372.58M / 簡體中文
- 有柿電腦版 v11.6.284.23M / 簡體中文
- cnki全球?qū)W術(shù)快報電腦版 v1.0.1135.99M / 簡體中文
- 南方Plus電腦版 v11.9.026.47M / 簡體中文
- 開源閱讀電腦版 v3.2517.96M / 簡體中文
- 京東讀書電腦版 v1.13.4官方版1.98M / 簡體中文
- 瀟湘書院電腦版 v2.3.11.888官方版49.65M / 簡體中文
- 未公開的Oracle數(shù)據(jù)庫秘密 迪貝斯pdf掃描版34.69M / 簡體中文
- PHP語言精粹電子書 pdf掃描版25.72M / 簡體中文
- 本草綱目 5.34M / 簡體中文