注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡軟件與程序設計其他編程語言/工具Windows匯編語言程序設計教程

Windows匯編語言程序設計教程

Windows匯編語言程序設計教程

定 價:¥32.00

作 者: 譚毓安,張雪蘭編著
出版社: 電子工業(yè)出版社
叢編項:
標 簽: 匯編語言程序設計

ISBN: 9787121009860 出版時間: 2005-04-01 包裝: 膠版紙
開本: 26cm 頁數(shù): 413 字數(shù):  

內(nèi)容簡介

  本書以Windows操作系統(tǒng)和Intel80x86/Pentium系列CPU為背景,全面系統(tǒng)地介紹了32位保護模式下的匯編語言程序設計,包括Windows編程環(huán)境、Intel80x86/Pentium指令系統(tǒng)、MASM的偽指令與操作符等知識,以及分支、循環(huán)、子程序、C/C++混合編程、上機調(diào)試過程等程序設計方法。本書的核心是Windows下的32位保護模式編程,摒棄了過時的16位DOS實模式編程環(huán)境,與當前的軟件開發(fā)和微機應用環(huán)境結(jié)合緊密。本書不但能幫助讀者順利地掌握匯編語言程序設計方法,而且能夠提高讀者的C/C++編程水平。書中的程序具有很強的實用性,強調(diào)C/C++和匯編語言的聯(lián)合編程能力,通過這些實例與其他課程相呼應,有利于各門課程之間的融會貫通。本書適合作為高等院校匯編語言程序設計相關課程的教材或教學輔導書,也可作為希望掌握Windows匯編程序設計的中高級程序開發(fā)人員的自學參考書。本書前言前言:匯編語言是執(zhí)行效率最高、功能最強的一種程序設計語言,它能夠直接控制計算機硬件,并最大限度地發(fā)揮硬件的能力。在對程序的執(zhí)行時間和占用空間要求很高的場合,必須使用匯編語言才能滿足要求。匯編語言還可以與高級語言進行混合編程,以發(fā)揮各自的優(yōu)勢。通過學習匯編語言,有助于理解操作系統(tǒng)和應用程序的運行原理,準確地分析程序錯誤。它也是掌握加密/解密技術、病毒蠕蟲機理、剖析關鍵代碼等高級技術的必備基礎。《匯編語言程序設計》是一門程序設計課程,然而目前許多教材仍然基于DOS系統(tǒng)和8086/8088之上,與十幾年前的教材相比,僅僅增加了32位指令和保護模式的介紹,而核心內(nèi)容仍然是DOS下的16位實模式編程。其中的BIOS/DOS功能調(diào)用、64KB內(nèi)存分段結(jié)構(gòu)、上機環(huán)境、16位C/匯編混合編程等已經(jīng)嚴重落后于當前的應用環(huán)境,與國內(nèi)外主流的軟件開發(fā)需求嚴重脫節(jié)。我們認為,隨著DOS逐步退出操作系統(tǒng)的歷史舞臺,這門課程的基礎知識和實踐環(huán)節(jié)必須與時俱進,需要從DOS下的16位實模式編程過渡到Windows下的32位保護模式編程。本書的編寫就是在這樣的背景下完成的。本書選擇了Windows操作系統(tǒng)和32位Pentium微機作為平臺,介紹匯編語言的基礎知識和應用,達到與當前軟件開發(fā)和應用環(huán)境緊密結(jié)合的目的。本書有以下幾個特點。(1)從DOS過渡到Windows。不再介紹過時的BIOS/DOS功能調(diào)用和DOS執(zhí)行環(huán)境,取而代之的是Windows的API和C庫函數(shù),書中所有的例子都是在Windows保護模式環(huán)境下運行的32位程序。(2)實踐性強。將實踐環(huán)節(jié)提前,將100多條指令貫穿于全書,全部程序都能上機調(diào)試運行,使讀者能在實踐中掌握匯編語言程序設計并熟悉Pentium的指令系統(tǒng)。尤其是將VisualC/C++作為匯編的開發(fā)環(huán)境,極大地方便了匯編程序的編寫、調(diào)試和運行。將各種指令和偽操作等內(nèi)容分解到全書中,逐步接觸并使用這些指令,會達到循序漸進的效果。(3)與C/C++緊密結(jié)合。C/C++語言是目前的主流開發(fā)語言,往往也是匯編語言的先修課程。書中的部分C/C++程序與匯編程序相對照,在匯編程序中也調(diào)用了C庫函數(shù)。這不但有利于對匯編語言的掌握,而且能夠提高C/C++程序的編程水平,理解和解決在C/C++程序開發(fā)過程中遇到的結(jié)構(gòu)對齊、字節(jié)序、程序運行效率、堆棧溢出、內(nèi)存覆蓋、系統(tǒng)崩潰、訪問違例等問題。C/C++和匯編語言聯(lián)合編程能夠應用于當前實際的軟件開發(fā)過程,具有很強的實踐指導性。(4)介紹了保護模式的運行機制。在介紹保護模式時,使用了大量的實例以幫助讀者更好地理解描述符、頁表、門、任務等復雜概念,其中還介紹了一個Windows內(nèi)核驅(qū)動程序。通過對Pentium保護模式的學習,能夠更透徹地理解虛擬內(nèi)存管理、進程環(huán)境等其他相關知識。(5)采用典型編程實例。在示例程序中采用了指針、數(shù)組、結(jié)構(gòu)、鏈表等數(shù)據(jù)結(jié)構(gòu),以及冒泡排序、快速排序、折半查找、加密/解密等算法,既體現(xiàn)了匯編語言的編程特點,又具有很強的實用性。(6)知識全面。增加了MASM6.1版本的匯編高級語法等,并介紹了DLL、C庫函數(shù)、WindowsAPI等內(nèi)容。(7)適合自學。對部分不能在課堂上講授的內(nèi)容,可安排自學。在編寫過程中,采用循序漸進的敘述方法,配以大量的實例來幫助讀者對這些內(nèi)容進行理解。書中的許多習題都是以例子程序為基礎的,可達到舉一反三的效果。Pentium指令系統(tǒng)中還包括浮點運算、MMX多媒體擴展、數(shù)據(jù)流SIMD擴展(SSE、SSE2)等部分,考慮到它們的使用范圍較窄,由于篇幅所限,本書沒有介紹這方面的內(nèi)容,感興趣的讀者可以參考其他書籍。全書共分10章。第1,2,3章由張雪蘭教授編寫,其余各章由譚毓安副教授編寫。7.4節(jié)、7.5節(jié)、8.2節(jié)、8.5節(jié)及第10章屬于較高要求的內(nèi)容,在教學時可以根據(jù)情況進行刪減。在本書的編寫過程中,不僅融合了作者多年來講授匯編語言程序設計課程的經(jīng)驗,還請多位老師和同學閱讀了書稿,提出了改進意見,在此深表謝意。同時,本書還參考了國內(nèi)外的眾多教材和資料,在此謹對這些教材和資料的原創(chuàng)者致謝。對書中的錯誤和不當之處,敬請廣大讀者批評指正。作者的電子郵箱是:victortan@yeah.net,歡迎通過電子郵件方式向本人索取本書的PowerPoint講稿和其他教學資料。編者

作者簡介

暫缺《Windows匯編語言程序設計教程》作者簡介

圖書目錄

第1章 基礎知識 1
1.1 常用數(shù)制及其相互轉(zhuǎn)換 1
1.2 存儲器內(nèi)的數(shù)字表示 3
1.2.1 存儲器 3
1.2.2 存儲順序 6
1.3 數(shù)據(jù)表示 8
1.3.1 整數(shù)的表示 8
1.3.2 字符的表示 9
1.3.3 漢字的表示 9
1.3.4 Unicode標準 10
1.3.5 BCD碼 11
習題1 11
第2章 Intel 80x86系列微處理器 13
2.1 Intel CPU的發(fā)展 13
2.1.1 4位CPU:4004 13
2.1.2 8位CPU:8008. 8080 13
2.1.3 16位CPU:8086. 8088. 80286 13
2.1.4 32位CPU:80386. 80486 14
2.1.5 準64位CPU:Pentium. PⅡ. PⅢ. P4 14
2.1.6 64位CPU:Itanium 16
2.2 PC機操作系統(tǒng)的發(fā)展 16
2.2.1 MS-DOS 16
2.2.2 桌面Windows系統(tǒng) 17
2.2.3 Windows NT系列 17
2.2.4 Linux 18
2.3 16位CPU及DOS基礎 19
2.3.1 執(zhí)行單元 19
2.3.2 總線接口單元 20
2.3.3 寄存器 20
2.3.4 存儲器的分段 22
2.3.5 DOS的內(nèi)存布局 23
2.3.6 I/O地址空間 25
2.4 32位CPU及Windows基礎 25
2.4.1 三種工作模式 25
2.4.2 寄存器 27
2.4.3 Windows應用程序的內(nèi)存布局 29
2.4.4 Windows的保護機制 32
習題2 34
第3章 Windows匯編程序基礎 36
3.1 機器語言. 匯編語言和高級語言 36
3.1.1 機器語言 36
3.1.2 匯編語言 37
3.1.3 高級語言 38
3.1.4 三種語言的比較 38
3.2 匯編語言程序的上機過程 39
3.2.1 匯編程序的開發(fā)過程 40
3.2.2 MASM匯編器 41
3.2.3 LINK鏈接器 42
3.2.4 匯編鏈接步驟 42
3.3 匯編源程序的格式 43
3.3.1 一個顯示字符串的匯編程序 43
3.3.2 程序格式 44
3.3.3 一個Windows界面的匯編程序 51
3.4 操作數(shù)的尋址方式 52
3.4.1 立即尋址 53
3.4.2 寄存器尋址 53
3.4.3 直接尋址 54
3.4.4 寄存器間接尋址 54
3.4.5 寄存器相對尋址 55
3.4.6 基址變址尋址 56
3.4.7 基址變址相對尋址 57
3.4.8 基址變址比例相對尋址 57
3.4.9 尋址方式總結(jié) 58
3.4.10 段超越 59
3.5 數(shù)據(jù)定義 60
3.5.1 常數(shù)的表示 60
3.5.2 簡單數(shù)據(jù)類型 61
3.5.3 DUP偽操作 62
3.5.4 數(shù)據(jù)定義的例子程序 62
3.6 操作符 66
3.6.1 常用偽操作 66
3.6.2 算術操作符 71
3.6.3 邏輯操作符 72
3.6.4 關系操作符 72
3.7 尋址方式的應用 72
3.7.1 立即數(shù) 72
3.7.2 數(shù)組元素的訪問 73
3.7.3 指針 74
習題3 76
第4章 數(shù)據(jù)操作 78
4.1 傳送指令 78
4.1.1 通用數(shù)據(jù)傳送指令 78
4.1.2 數(shù)據(jù)交換指令 81
4.1.3 取地址指令 82
4.2 算術運算 83
4.2.1 加法指令 83
4.2.2 減法指令 86
4.2.3 符號位擴展指令 89
4.2.4 乘法指令 91
4.2.5 除法指令 93
4.3 BCD碼算術運算 95
4.3.1 壓縮BCD碼調(diào)整指令 95
4.3.2 非壓縮BCD碼調(diào)整指令 96
4.4 位運算指令 98
4.4.1 邏輯運算指令 98
4.4.2 位操作指令 102
4.4.3 移位指令 104
習題4 109
第5章 分支與循環(huán)程序設計 111
5.1 轉(zhuǎn)移 111
5.1.1 無條件轉(zhuǎn)移指令 111
5.1.2 條件轉(zhuǎn)移指令 112
5.2 分支結(jié)構(gòu)程序設計 114
5.2.1 單分支結(jié)構(gòu)和雙分支結(jié)構(gòu) 115
5.2.2 多分支結(jié)構(gòu) 116
5.2.3 折半查找程序 119
5.2.4 有序表插入 121
5.3 循環(huán)程序設計 123
5.3.1 循環(huán)指令 124
5.3.2 不定次數(shù)的循環(huán) 128
5.3.3 循環(huán)體中操作的控制 128
5.3.4 多重循環(huán) 130
5.4 跳轉(zhuǎn)表 132
5.4.1 switch語句 132
5.4.2 跳轉(zhuǎn)表 133
習題5 135
第6章 子程序設計 137
6.1 堆棧 137
6.1.1 堆??臻g 137
6.1.2 進棧和出棧指令 138
6.1.3 堆棧的用途 141
6.2 子程序 143
6.2.1 子程序的定義和調(diào)用 144
6.2.2 調(diào)用和返回指令 144
6.2.3 C語言函數(shù)的參數(shù)傳遞方式 147
6.2.4 匯編語言子程序的參數(shù)傳遞方式 153
6.2.5 帶參數(shù)子程序的調(diào)用 154
6.2.6 子程序中的局部變量 157
6.2.7 子程序的嵌套 163
6.2.8 子程序的遞歸 163
6.3 Windows API 166
習題6 168
第7章 常用數(shù)據(jù)結(jié)構(gòu) 171
7.1 數(shù)組與內(nèi)存塊 171
7.1.1 塊操作 172
7.1.2 塊傳送指令 173
7.1.3 塊存儲指令 178
7.1.4 塊裝入指令 178
7.1.5 塊比較指令 179
7.1.6 塊掃描指令 181
7.2 字符串處理 182
7.2.1 常用字符串處理函數(shù) 183
7.2.2 常用內(nèi)存塊處理函數(shù) 185
7.3 結(jié)構(gòu) 188
7.3.1 表示時間的結(jié)構(gòu) 188
7.3.2 結(jié)構(gòu)的聲明和定義 190
7.3.3 結(jié)構(gòu)數(shù)組 193
7.4 鏈表 198
7.4.1 動態(tài)分配和釋放內(nèi)存 198
7.4.2 鏈表中元素的插入與刪除 199
7.4.3 鏈表的排序 204
7.4.4 雙向鏈表 207
7.5 函數(shù)指針 207
7.5.1 指向子程序(函數(shù))的指針 208
7.5.2 結(jié)構(gòu)中的函數(shù)指針 210
7.6 程序執(zhí)行環(huán)境 212
7.6.1 輸入/輸出重定向 212
7.6.2 命令行參數(shù)及程序返回值 213
習題7 214
第8章 匯編語言高級編程技術 216
8.1 宏 216
8.1.1 宏指令的定義和使用 216
8.1.2 宏指令中參數(shù)的使用 220
8.1.3 特殊的宏操作符 222
8.1.4 宏與子程序的區(qū)別 226
8.1.5 重復匯編 227
8.1.6 條件匯編 230
8.2 匯編高級語法 236
8.2.1 條件測試表達式 237
8.2.2 分支偽操作 239
8.2.3 循環(huán)偽操作 241
8.3 模塊化程序設計 244
8.3.1 模塊化程序設計基本概念 244
8.3.2 模塊間的通信 245
8.4 C和匯編的混合編程 247
8.4.1 直接嵌入 247
8.4.2 C程序調(diào)用匯編子程序 249
8.4.3 匯編調(diào)用C函數(shù) 259
8.4.4 C 與匯編 261
8.5 程序優(yōu)化 268
8.5.1 運行時間的優(yōu)化 269
8.5.2 占用空間的優(yōu)化 276
習題8 280
第9章 I/O程序設計 283
9.1 I/O操作 283
9.1.1 I/O端口及其分配 283
9.1.2 I/O指令 286
9.1.3 保護模式下I/O指令的限制 288
9.2 直接傳送方式 289
9.2.1 CMOS數(shù)據(jù)的讀取 289
9.2.2 揚聲器發(fā)聲程序 292
9.2.3 串行I/O 294
9.2.4 并行I/O 296
9.3 中斷傳送方式 298
9.3.1 基本原理 298
9.3.2 中斷服務程序 300
9.4 DMA傳送方式 302
9.4.1 DMA傳送的過程 303
9.4.2 軟盤控制器與DMA 304
9.5 文件I/O 304
9.5.1 文件 305
9.5.2 文件操作的基本函數(shù) 307
9.5.3 文件處理實例 310
習題9 316
第10章 保護模式及其編程 318
10.1 保護模式基礎 318
10.1.1 32位CPU內(nèi)部結(jié)構(gòu) 318
10.1.2 三種運行模式 320
10.1.3 寄存器 321
10.1.4 顯示CPU寄存器的值 327
10.2 虛擬內(nèi)存管理 331
10.2.1 段式內(nèi)存管理功能 331
10.2.2 頁式內(nèi)存管理功能 336
10.3 特權(quán)級保護 347
10.3.1 對數(shù)據(jù)訪問的保護 348
10.3.2 對程序轉(zhuǎn)移的保護 350
10.3.3 門 351
10.4 任務 354
10.4.1 任務狀態(tài)段 354
10.4.2 任務切換 358
10.4.3 輸入/輸出保護 362
10.4.4 編寫驅(qū)動程序修改I/O位圖 364
10.5 中斷和異常 369
10.5.1 中斷和異常的類型 369
10.5.2 中斷門和陷阱門 376
10.5.3 中斷和異常的處理過程 378
10.5.4 通過任務門的轉(zhuǎn)移 381
10.5.5 結(jié)構(gòu)化異常處理 384
10.6 虛擬8086模式 389
10.6.1 虛擬8086任務 389
10.6.2 虛擬8086模式的進入和退出 391
10.7 操作系統(tǒng)類指令 394
10.7.1 在實模式和任何特權(quán)級下可執(zhí)行的指令 395
10.7.2 僅在實模式及特權(quán)級0下可執(zhí)行的指令 396
10.7.3 僅在保護模式下可執(zhí)行的指令 397
習題10 401
附錄A 使用VC編譯調(diào)試匯編程序 403
附錄B ASCII碼表 410
附錄C 匯編語言偽指令和操作符 412
參考文獻 414

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號