本書為“十二五”普通高等教育本科國家級規(guī)劃教材,是教育部‐微軟精品課程教學成果。本書以Intel 80x86指令系統(tǒng)和MASM 6.x為主體,共10章,分為基礎(chǔ)和提高兩部分。前5章為基礎(chǔ)部分,以當前“匯編語言程序設(shè)計”課程的教學為目標,講解16位基本整數(shù)指令及其匯編語言程序設(shè)計的知識,包括:匯編語言程序設(shè)計基礎(chǔ)知識,8086指令詳解,MASM偽指令和操作符,程序格式,程序結(jié)構(gòu)及其設(shè)計方法。后5章為提高部分,介紹匯編語言程序設(shè)計的深入內(nèi)容和實際應(yīng)用知識,包括:32位80x86 CPU的整數(shù)指令系統(tǒng)及其編程,匯編語言與C/C++混合編程,80x87 FPU浮點指令系統(tǒng)及其編程,多媒體擴展指令系統(tǒng)及其編程,64位指令簡介。本書可作為高等院!皡R編語言程序設(shè)計”課程的教材或參考書。本書內(nèi)容廣博、語言淺顯、結(jié)構(gòu)清晰、實例豐富,也適合電子信息、自動控制等專業(yè)的高校學生和成教學生、計算機應(yīng)用開發(fā)人員、深入學習微機應(yīng)用技術(shù)的普通讀者閱讀。
錢曉捷,男,副教授,鄭州大學信息學院。中國計算機學會會員,現(xiàn)任河南省計算機學會教育專委副主任,主要從事計算機系統(tǒng)結(jié)構(gòu)、嵌入式系統(tǒng)、計算機輔助教學等方面的研究。主持教育部-微軟、河南省精品課程“匯編語言程序設(shè)計”、校級遠程教育精品課程“微機原理及接口技術(shù)”建設(shè)。主持完成“網(wǎng)絡(luò)CAI課件研究與開發(fā)”、“河南省新世紀網(wǎng)絡(luò)課程建設(shè)工程項目”等科研項目。主編10余部高校教材,其中2部屬于普通高等教育“十一五”國家級規(guī)劃教材。具有豐富的教學經(jīng)歷和教研體會,主講計算機硬件系列課程20余年,主要包括“微機原理及接口技術(shù)”、“匯編語言程序設(shè)計”、“計算機組織與結(jié)構(gòu)”、“高級計算機系統(tǒng)結(jié)構(gòu)”等。
目 錄
第1章 匯編語言基礎(chǔ)知識 1
1.1 計算機系統(tǒng)概述 1
1.1.1 計算機的硬件 1
1.1.2 計算機的軟件 3
1.1.3 計算機的程序設(shè)計語言 3
1.2 數(shù)據(jù)表示 5
1.2.1 數(shù)制 5
1.2.2 數(shù)值的編碼 8
1.2.3 字符的編碼 10
1.3 Intel 80x86系列微處理器 13
1.3.1 16位80x86微處理器 13
1.3.2 IA-32微處理器 14
1.3.3 Intel 64處理器 15
1.4 微型計算機系統(tǒng) 16
1.5 8086微處理器 18
1.5.1 8086的功能結(jié)構(gòu) 18
1.5.2 8086的寄存器 19
1.5.3 8086的存儲器組織 22
1.6 8086的尋址方式 25
1.6.1 8086的機器代碼格式 26
1.6.2 立即數(shù)尋址方式 27
1.6.3 寄存器尋址方式 28
1.6.4 存儲器尋址方式 28
1.6.5 數(shù)據(jù)尋址的組合 30
習題1 31
第2章 8086的指令系統(tǒng) 33
2.1 數(shù)據(jù)傳送類指令 33
2.1.1 通用數(shù)據(jù)傳送指令 33
2.1.2 堆棧操作指令 36
2.1.3 標志傳送指令 38
2.1.4 地址傳送指令 39
2.2 算術(shù)運算類指令 39
2.2.1 狀態(tài)標志 39
2.2.2 加法指令 41
2.2.3 減法指令 42
2.2.4 乘法指令 44
2.2.5 除法指令 44
2.2.6 符號擴展指令 45
2.2.7 十進制調(diào)整指令 46
2.3 位操作類指令 49
2.3.1 邏輯運算指令 49
2.3.2 移位指令 50
2.3.3 循環(huán)移位指令 51
2.4 控制轉(zhuǎn)移類指令 52
2.4.1 無條件轉(zhuǎn)移指令 53
2.4.2 條件轉(zhuǎn)移指令 54
2.4.3 循環(huán)指令 57
2.4.4 子程序指令 58
2.4.5 中斷指令 59
2.5 處理機控制類指令 61
習題2 63
第3章 匯編語言程序格式 68
3.1 匯編語言程序的開發(fā) 68
3.1.1 匯編語言程序的語句格式 68
3.1.2 匯編語言的源程序框架 70
3.1.3 匯編語言程序的開發(fā)過程 73
3.1.4 DOS系統(tǒng)功能調(diào)用 82
3.2 參數(shù)、變量和標號 84
3.2.1 數(shù)值型參數(shù) 84
3.2.2 變量定義偽指令 86
3.2.3 變量和標號的屬性 90
3.3 程序段的定義和屬性 92
3.3.1 DOS的程序結(jié)構(gòu) 92
3.3.2 簡化段定義的格式 93
3.3.3 完整段定義的格式 97
3.4 復(fù)雜數(shù)據(jù)結(jié)構(gòu) 100
3.4.1 結(jié)構(gòu) 100
3.4.2 記錄 102
習題3 103
第4章 基本匯編語言程序設(shè)計 106
4.1 順序程序設(shè)計 106
4.2 分支程序設(shè)計 107
4.2.1 單分支結(jié)構(gòu) 107
4.2.2 雙分支結(jié)構(gòu) 108
4.2.3 多分支結(jié)構(gòu) 109
4.3 循環(huán)程序設(shè)計 112
4.3.1 計數(shù)控制循環(huán) 113
4.3.2 條件控制循環(huán) 114
4.3.3 多重循環(huán) 115
4.3.4 串操作類指令 116
4.4 子程序設(shè)計 121
4.4.1 過程定義偽指令 122
4.4.2 子程序的參數(shù)傳遞 124
4.4.3 子程序的嵌套、遞歸和重入 127
4.4.4 子程序的應(yīng)用 129
習題4 134
第5章 高級匯編語言程序設(shè)計 137
5.1 高級語言特性 137
5.1.1 條件控制偽指令 137
5.1.2 循環(huán)控制偽指令 139
5.1.3 過程聲明和過程調(diào)用偽指令 141
5.2 宏結(jié)構(gòu)程序設(shè)計 143
5.2.1 宏匯編 144
5.2.2 重復(fù)匯編 149
5.2.3 條件匯編 150
5.3 模塊化程序設(shè)計 153
5.3.1 源程序文件的包含 153
5.3.2 目標代碼文件的連接 158
5.3.3 子程序庫的調(diào)入 160
5.4 輸入 / 輸出程序設(shè)計 162
5.4.1 輸入/輸出指令 163
5.4.2 程序直接控制輸入/輸出 164
5.4.3 程序查詢輸入/輸出 165
5.4.4 中斷服務(wù)程序 166
習題5 173
第6章 32位指令及其編程 176
6.1 32位CPU的指令運行環(huán)境 176
6.1.1 寄存器 177
6.1.2 尋址方式 179
6.1.3 機器代碼格式 180
6.2 32位擴展指令 182
6.2.1 數(shù)據(jù)傳送類指令 182
6.2.2 算術(shù)運算類指令 184
6.2.3 位操作類指令 185
6.2.4 串操作類指令 185
6.2.5 控制轉(zhuǎn)移類指令 186
6.3 DOS下的32位程序設(shè)計 189
6.4 32位新增指令 193
6.4.1 80386新增指令 193
6.4.2 80486新增指令 196
6.4.3 Pentium新增指令 197
6.4.4 Pentium Pro新增指令 201
6.5 用匯編語言編寫32位Windows應(yīng)用程序 202
6.5.1 32位Windows應(yīng)用程序的特點 203
6.5.2 32位Windows控制臺程序 204
6.5.3 Windows應(yīng)用程序的開發(fā) 208
6.5.4 創(chuàng)建消息窗口 209
6.5.5 創(chuàng)建窗口應(yīng)用程序 210
習題6 217
第7章 匯編語言與C/C++的混合編程 221
7.1 Turbo C嵌入?yún)R編方式 221
7.1.1 嵌入?yún)R編語句的格式 222
7.1.2 匯編語句訪問C語言的數(shù)據(jù) 223
7.1.3 嵌入?yún)R編的編譯過程 224
7.2 Turbo C模塊連接方式 225
7.2.1 混合編程的約定規(guī)則 225
7.2.2 匯編模塊的編譯和連接 227
7.2.3 混合編程的參數(shù)傳遞 228
7.2.4 匯編語言程序?qū)語言程序的調(diào)用 235
7.3 匯編語言在Visual C++中的應(yīng)用 238
7.3.1 嵌入?yún)R編語言指令 238
7.3.2 調(diào)用匯編語言過程 241
7.3.3 使用匯編語言優(yōu)化C++代碼 245
7.3.4 使用Visual C++開發(fā)匯編語言程序 248
習題7 251
第8章 80x87浮點指令及其編程 254
8.1 浮點數(shù)據(jù)格式 254
8.1.1 實數(shù)和浮點格式 254
8.1.2 80x87的數(shù)據(jù)格式 257
8.2 浮點寄存器 259
8.3 浮點指令的程序設(shè)計 262
8.3.1 浮點傳送類指令 263
8.3.2 算術(shù)運算類指令 265
8.3.3 超越函數(shù)類指令 268
8.3.4 浮點比較類指令 269
8.3.5 FPU控制類指令 273
習題8 277
第9章 多媒體指令及其編程 280
9.1 MMX指令系統(tǒng) 280
9.1.1 MMX的數(shù)據(jù)結(jié)構(gòu) 280
9.1.2 MMX指令 282
9.1.3 MMX指令的程序設(shè)計 289
9.2 SSE指令系統(tǒng) 291
9.2.1 SIMD浮點指令 291
9.2.2 SIMD整數(shù)指令 299
9.2.3 高速緩存優(yōu)化處理指令 301
9.2.4 SSE指令的程序設(shè)計 302
9.3 SSE2指令系統(tǒng) 306
9.3.1 SSE2的數(shù)據(jù)類型 306
9.3.2 SSE2浮點指令 307
9.3.3 SSE2擴展指令 312
9.3.4 SSE2指令的程序設(shè)計 314
9.4 SSE3指令系統(tǒng) 316
9.4.1 SSE3指令 316
9.4.2 SSE3指令的程序設(shè)計 318
習題9 319
第10章 64位指令簡介 321
10.1 64位方式的運行環(huán)境 321
10.2 64位方式的指令 324
附錄A 調(diào)試程序DEBUG 328
A.1 DEBUG程序的調(diào)用 328
A.2 DEBUG命令的格式 328
A.3 DEBUG的命令 329
A.4 程序片段的調(diào)試方法 333
A.5 可執(zhí)行程序文件的調(diào)試方法 334
A.6 使用調(diào)試程序的注意事項 336
附錄B 調(diào)試程序CodeView 338
B.1 CodeView的菜單命令 338
B.2 CodeView的窗口 340
B.3 CodeView的設(shè)置 342
B.4 使用CodeView的調(diào)試示例 343
附錄C 匯編程序MASM的偽指令和操作符 346
附錄D 80x86整數(shù)指令系統(tǒng) 347
附錄E 常見匯編錯誤信息 353
附錄F 輸入/輸出子程序庫 355
參考文獻 356