注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)其他編程語(yǔ)言/工具Windows匯編語(yǔ)言程序設(shè)計(jì)教程

Windows匯編語(yǔ)言程序設(shè)計(jì)教程

Windows匯編語(yǔ)言程序設(shè)計(jì)教程

定 價(jià):¥32.00

作 者: 譚毓安,張雪蘭編著
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 匯編語(yǔ)言程序設(shè)計(jì)

ISBN: 9787121009860 出版時(shí)間: 2005-04-01 包裝: 膠版紙
開(kāi)本: 26cm 頁(yè)數(shù): 413 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

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

作者簡(jiǎn)介

暫缺《Windows匯編語(yǔ)言程序設(shè)計(jì)教程》作者簡(jiǎn)介

圖書(shū)目錄

第1章 基礎(chǔ)知識(shí) 1
1.1 常用數(shù)制及其相互轉(zhuǎn)換 1
1.2 存儲(chǔ)器內(nèi)的數(shù)字表示 3
1.2.1 存儲(chǔ)器 3
1.2.2 存儲(chǔ)順序 6
1.3 數(shù)據(jù)表示 8
1.3.1 整數(shù)的表示 8
1.3.2 字符的表示 9
1.3.3 漢字的表示 9
1.3.4 Unicode標(biāo)準(zhǔn) 10
1.3.5 BCD碼 11
習(xí)題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 準(zhǔn)64位CPU:Pentium. PⅡ. PⅢ. P4 14
2.1.6 64位CPU:Itanium 16
2.2 PC機(jī)操作系統(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基礎(chǔ) 19
2.3.1 執(zhí)行單元 19
2.3.2 總線接口單元 20
2.3.3 寄存器 20
2.3.4 存儲(chǔ)器的分段 22
2.3.5 DOS的內(nèi)存布局 23
2.3.6 I/O地址空間 25
2.4 32位CPU及Windows基礎(chǔ) 25
2.4.1 三種工作模式 25
2.4.2 寄存器 27
2.4.3 Windows應(yīng)用程序的內(nèi)存布局 29
2.4.4 Windows的保護(hù)機(jī)制 32
習(xí)題2 34
第3章 Windows匯編程序基礎(chǔ) 36
3.1 機(jī)器語(yǔ)言. 匯編語(yǔ)言和高級(jí)語(yǔ)言 36
3.1.1 機(jī)器語(yǔ)言 36
3.1.2 匯編語(yǔ)言 37
3.1.3 高級(jí)語(yǔ)言 38
3.1.4 三種語(yǔ)言的比較 38
3.2 匯編語(yǔ)言程序的上機(jī)過(guò)程 39
3.2.1 匯編程序的開(kāi)發(fā)過(guò)程 40
3.2.2 MASM匯編器 41
3.2.3 LINK鏈接器 42
3.2.4 匯編鏈接步驟 42
3.3 匯編源程序的格式 43
3.3.1 一個(gè)顯示字符串的匯編程序 43
3.3.2 程序格式 44
3.3.3 一個(gè)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 寄存器相對(duì)尋址 55
3.4.6 基址變址尋址 56
3.4.7 基址變址相對(duì)尋址 57
3.4.8 基址變址比例相對(duì)尋址 57
3.4.9 尋址方式總結(jié) 58
3.4.10 段超越 59
3.5 數(shù)據(jù)定義 60
3.5.1 常數(shù)的表示 60
3.5.2 簡(jiǎn)單數(shù)據(jù)類(lèi)型 61
3.5.3 DUP偽操作 62
3.5.4 數(shù)據(jù)定義的例子程序 62
3.6 操作符 66
3.6.1 常用偽操作 66
3.6.2 算術(shù)操作符 71
3.6.3 邏輯操作符 72
3.6.4 關(guān)系操作符 72
3.7 尋址方式的應(yīng)用 72
3.7.1 立即數(shù) 72
3.7.2 數(shù)組元素的訪問(wèn) 73
3.7.3 指針 74
習(xí)題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 算術(shù)運(yùn)算 83
4.2.1 加法指令 83
4.2.2 減法指令 86
4.2.3 符號(hào)位擴(kuò)展指令 89
4.2.4 乘法指令 91
4.2.5 除法指令 93
4.3 BCD碼算術(shù)運(yùn)算 95
4.3.1 壓縮BCD碼調(diào)整指令 95
4.3.2 非壓縮BCD碼調(diào)整指令 96
4.4 位運(yùn)算指令 98
4.4.1 邏輯運(yùn)算指令 98
4.4.2 位操作指令 102
4.4.3 移位指令 104
習(xí)題4 109
第5章 分支與循環(huán)程序設(shè)計(jì) 111
5.1 轉(zhuǎn)移 111
5.1.1 無(wú)條件轉(zhuǎn)移指令 111
5.1.2 條件轉(zhuǎn)移指令 112
5.2 分支結(jié)構(gòu)程序設(shè)計(jì) 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)程序設(shè)計(jì) 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語(yǔ)句 132
5.4.2 跳轉(zhuǎn)表 133
習(xí)題5 135
第6章 子程序設(shè)計(jì) 137
6.1 堆棧 137
6.1.1 堆??臻g 137
6.1.2 進(jìn)棧和出棧指令 138
6.1.3 堆棧的用途 141
6.2 子程序 143
6.2.1 子程序的定義和調(diào)用 144
6.2.2 調(diào)用和返回指令 144
6.2.3 C語(yǔ)言函數(shù)的參數(shù)傳遞方式 147
6.2.4 匯編語(yǔ)言子程序的參數(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
習(xí)題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 塊存儲(chǔ)指令 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 表示時(shí)間的結(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 動(dòng)態(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
習(xí)題7 214
第8章 匯編語(yǔ)言高級(jí)編程技術(shù) 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 重復(fù)匯編 227
8.1.6 條件匯編 230
8.2 匯編高級(jí)語(yǔ)法 236
8.2.1 條件測(cè)試表達(dá)式 237
8.2.2 分支偽操作 239
8.2.3 循環(huán)偽操作 241
8.3 模塊化程序設(shè)計(jì) 244
8.3.1 模塊化程序設(shè)計(jì)基本概念 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ùn)行時(shí)間的優(yōu)化 269
8.5.2 占用空間的優(yōu)化 276
習(xí)題8 280
第9章 I/O程序設(shè)計(jì) 283
9.1 I/O操作 283
9.1.1 I/O端口及其分配 283
9.1.2 I/O指令 286
9.1.3 保護(hù)模式下I/O指令的限制 288
9.2 直接傳送方式 289
9.2.1 CMOS數(shù)據(jù)的讀取 289
9.2.2 揚(yáng)聲器發(fā)聲程序 292
9.2.3 串行I/O 294
9.2.4 并行I/O 296
9.3 中斷傳送方式 298
9.3.1 基本原理 298
9.3.2 中斷服務(wù)程序 300
9.4 DMA傳送方式 302
9.4.1 DMA傳送的過(guò)程 303
9.4.2 軟盤(pán)控制器與DMA 304
9.5 文件I/O 304
9.5.1 文件 305
9.5.2 文件操作的基本函數(shù) 307
9.5.3 文件處理實(shí)例 310
習(xí)題9 316
第10章 保護(hù)模式及其編程 318
10.1 保護(hù)模式基礎(chǔ) 318
10.1.1 32位CPU內(nèi)部結(jié)構(gòu) 318
10.1.2 三種運(yùn)行模式 320
10.1.3 寄存器 321
10.1.4 顯示CPU寄存器的值 327
10.2 虛擬內(nèi)存管理 331
10.2.1 段式內(nèi)存管理功能 331
10.2.2 頁(yè)式內(nèi)存管理功能 336
10.3 特權(quán)級(jí)保護(hù) 347
10.3.1 對(duì)數(shù)據(jù)訪問(wèn)的保護(hù) 348
10.3.2 對(duì)程序轉(zhuǎn)移的保護(hù) 350
10.3.3 門(mén) 351
10.4 任務(wù) 354
10.4.1 任務(wù)狀態(tài)段 354
10.4.2 任務(wù)切換 358
10.4.3 輸入/輸出保護(hù) 362
10.4.4 編寫(xiě)驅(qū)動(dòng)程序修改I/O位圖 364
10.5 中斷和異常 369
10.5.1 中斷和異常的類(lèi)型 369
10.5.2 中斷門(mén)和陷阱門(mén) 376
10.5.3 中斷和異常的處理過(guò)程 378
10.5.4 通過(guò)任務(wù)門(mén)的轉(zhuǎn)移 381
10.5.5 結(jié)構(gòu)化異常處理 384
10.6 虛擬8086模式 389
10.6.1 虛擬8086任務(wù) 389
10.6.2 虛擬8086模式的進(jìn)入和退出 391
10.7 操作系統(tǒng)類(lèi)指令 394
10.7.1 在實(shí)模式和任何特權(quán)級(jí)下可執(zhí)行的指令 395
10.7.2 僅在實(shí)模式及特權(quán)級(jí)0下可執(zhí)行的指令 396
10.7.3 僅在保護(hù)模式下可執(zhí)行的指令 397
習(xí)題10 401
附錄A 使用VC編譯調(diào)試匯編程序 403
附錄B ASCII碼表 410
附錄C 匯編語(yǔ)言偽指令和操作符 412
參考文獻(xiàn) 414

本目錄推薦

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