本書為“十二五”普通高等教育本科國家級規(guī)劃教材,是教育部‐微軟精品課程教學成果。本書以Intel 80x86指令系統(tǒng)和MASM 6.x為主體,共10章,分為基礎和提高兩部分。前5章為基礎部分,以當前“匯編語言程序設計”課程的教學為目標,講解16位基本整數(shù)指令及其匯編語言程序設計的知識,包括:匯編語言程序設計基礎知識,8086指令詳解,MASM偽指令和操作符,程序格式,程序結構及其設計方法。后5章為提高部分,介紹匯編語言程序設計的深入內容和實際應用知識,包括:32位80x86 CPU的整數(shù)指令系統(tǒng)及其編程,匯編語言與C/C++混合編程,80x87 FPU浮點指令系統(tǒng)及其編程,多媒體擴展指令系統(tǒng)及其編程,64位指令簡介。本書可作為高等院校“匯編語言程序設計”課程的教材或參考書。本書內容廣博、語言淺顯、結構清晰、實例豐富,也適合電子信息、自動控制等專業(yè)的高校學生和成教學生、計算機應用開發(fā)人員、深入學習微機應用技術的普通讀者閱讀。
錢曉捷,男,副教授,鄭州大學信息學院。中國計算機學會會員,現(xiàn)任河南省計算機學會教育專委副主任,主要從事計算機系統(tǒng)結構、嵌入式系統(tǒng)、計算機輔助教學等方面的研究。主持教育部-微軟、河南省精品課程“匯編語言程序設計”、校級遠程教育精品課程“微機原理及接口技術”建設。主持完成“網絡CAI課件研究與開發(fā)”、“河南省新世紀網絡課程建設工程項目”等科研項目。主編10余部高校教材,其中2部屬于普通高等教育“十一五”國家級規(guī)劃教材。具有豐富的教學經歷和教研體會,主講計算機硬件系列課程20余年,主要包括“微機原理及接口技術”、“匯編語言程序設計”、“計算機組織與結構”、“高級計算機系統(tǒng)結構”等。
目 錄
第1章 匯編語言基礎知識 1
1.1 計算機系統(tǒng)概述 1
1.1.1 計算機的硬件 1
1.1.2 計算機的軟件 3
1.1.3 計算機的程序設計語言 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的功能結構 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 算術運算類指令 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 十進制調整指令 46
2.3 位操作類指令 49
2.3.1 邏輯運算指令 49
2.3.2 移位指令 50
2.3.3 循環(huán)移位指令 51
2.4 控制轉移類指令 52
2.4.1 無條件轉移指令 53
2.4.2 條件轉移指令 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)功能調用 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的程序結構 92
3.3.2 簡化段定義的格式 93
3.3.3 完整段定義的格式 97
3.4 復雜數(shù)據(jù)結構 100
3.4.1 結構 100
3.4.2 記錄 102
習題3 103
第4章 基本匯編語言程序設計 106
4.1 順序程序設計 106
4.2 分支程序設計 107
4.2.1 單分支結構 107
4.2.2 雙分支結構 108
4.2.3 多分支結構 109
4.3 循環(huán)程序設計 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 子程序設計 121
4.4.1 過程定義偽指令 122
4.4.2 子程序的參數(shù)傳遞 124
4.4.3 子程序的嵌套、遞歸和重入 127
4.4.4 子程序的應用 129
習題4 134
第5章 高級匯編語言程序設計 137
5.1 高級語言特性 137
5.1.1 條件控制偽指令 137
5.1.2 循環(huán)控制偽指令 139
5.1.3 過程聲明和過程調用偽指令 141
5.2 宏結構程序設計 143
5.2.1 宏匯編 144
5.2.2 重復匯編 149
5.2.3 條件匯編 150
5.3 模塊化程序設計 153
5.3.1 源程序文件的包含 153
5.3.2 目標代碼文件的連接 158
5.3.3 子程序庫的調入 160
5.4 輸入 / 輸出程序設計 162
5.4.1 輸入/輸出指令 163
5.4.2 程序直接控制輸入/輸出 164
5.4.3 程序查詢輸入/輸出 165
5.4.4 中斷服務程序 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 算術運算類指令 184
6.2.3 位操作類指令 185
6.2.4 串操作類指令 185
6.2.5 控制轉移類指令 186
6.3 DOS下的32位程序設計 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應用程序 202
6.5.1 32位Windows應用程序的特點 203
6.5.2 32位Windows控制臺程序 204
6.5.3 Windows應用程序的開發(fā) 208
6.5.4 創(chuàng)建消息窗口 209
6.5.5 創(chuà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 匯編語言程序對C語言程序的調用 235
7.3 匯編語言在Visual C++中的應用 238
7.3.1 嵌入?yún)R編語言指令 238
7.3.2 調用匯編語言過程 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 浮點指令的程序設計 262
8.3.1 浮點傳送類指令 263
8.3.2 算術運算類指令 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ù)結構 280
9.1.2 MMX指令 282
9.1.3 MMX指令的程序設計 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指令的程序設計 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指令的程序設計 314
9.4 SSE3指令系統(tǒng) 316
9.4.1 SSE3指令 316
9.4.2 SSE3指令的程序設計 318
習題9 319
第10章 64位指令簡介 321
10.1 64位方式的運行環(huán)境 321
10.2 64位方式的指令 324
附錄A 調試程序DEBUG 328
A.1 DEBUG程序的調用 328
A.2 DEBUG命令的格式 328
A.3 DEBUG的命令 329
A.4 程序片段的調試方法 333
A.5 可執(zhí)行程序文件的調試方法 334
A.6 使用調試程序的注意事項 336
附錄B 調試程序CodeView 338
B.1 CodeView的菜單命令 338
B.2 CodeView的窗口 340
B.3 CodeView的設置 342
B.4 使用CodeView的調試示例 343
附錄C 匯編程序MASM的偽指令和操作符 346
附錄D 80x86整數(shù)指令系統(tǒng) 347
附錄E 常見匯編錯誤信息 353
附錄F 輸入/輸出子程序庫 355
參考文獻 356