1. 程式人生 > 其它 >組合語言 原文 高清 PDF 下載

組合語言 原文 高清 PDF 下載

獲取方式: https://pan.baidu.com/s/1VYJzDko9B8RsIwGKCK7xHg 提取碼: 9au5

組合語言是各種CPU提供的機器指令的助記符的集合,人們可以用匯編語言直接控制硬體系統進行工作。組合語言是很多相關課程(如資料結構、作業系統、微機原理等)的重要基礎。為了更好地引導、幫助讀者學習組合語言,作者以循序漸進的思想精心創作了這本書。《組合語言(第4版)》具有如下特點:採用了全新的結構對課程的內容進行組織,對知識進行z小化分割,為讀者構造了循序漸進的學習線索;在深入本質的層面上對組合語言進行講解;對關鍵環節進行深入的剖析。

《組合語言(第4版)》可用作大學計算機專業本科生的組合語言教材及希望深入學習電腦科學的讀者的自學教材

目錄
目 錄

第1章 基礎知識 1
1.1 機器語言 1
1.2 組合語言的產生 3
1.3 組合語言的組成 3
1.4 儲存器 4
1.5 指令和資料 4
1.6 儲存單元 4
1.7 CPU對儲存器的讀寫 5
1.8 地址匯流排 6
1.9 資料匯流排 7
1.10 控制匯流排 8
1.11 記憶體地址空間(概述) 9
1.12 主機板 9
1.13 介面卡 9
1.14 各類儲存器晶片 10
1.15 記憶體地址空間 11
第2章 暫存器 14
2.1 通用暫存器 14
2.2 字在暫存器中的儲存 16
2.3 幾條彙編指令 17
2.4 實體地址 20
2.5 16位結構的CPU 20
2.6 8086CPU給出實體地址的方法 20
2.7 “段地址?16+偏移地址=實體地址”
的本質含義 22
2.8 段的概念 23
2.9 段暫存器 25
2.10 CS和IP 25
2.11 修改CS、IP的指令 32
2.12 程式碼段 34
實驗1 檢視CPU和記憶體,用機器指令
和彙編指令程式設計 35
第3章 暫存器(記憶體訪問) 47
3.1 記憶體中字的儲存 47
3.2 DS和[address] 48
3.3 字的傳送 49
3.4 mov、add、sub指令 51
3.5 資料段 53
3.6 棧 56
3.7 CPU提供的棧機制 57
3.8 棧頂超界的問題 61
3.9 push、pop指令 63
3.10 棧段 68
實驗2 用機器指令和彙編指令程式設計 71
第4章 第一個程式 76
4.1 一個源程式從寫出到執行的過程 76
4.2 源程式 77
4.3 編輯源程式 82
4.4 編譯 83
4.5 連線 85
4.6 以簡化的方式進行編譯和連線 88
4.7 1.exe的執行 89
4.8 誰將可執行檔案中的程式裝載進入
記憶體並使它執行? 89
4.9 程式執行過程的跟蹤 91
實驗3 程式設計、編譯、連線、跟蹤 94
第5章 [BX]和loop指令 95
5.1 [BX] 97
5.2 Loop指令 99
5.3 在Debug中跟蹤用loop指令實現的
迴圈程式 103
5.4 Debug和彙編編譯器masm對指令的
不同處理 110
5.5 loop和[bx]的聯合應用 112
5.6 段字首 116
5.7 一段安全的空間 117
5.8 段字首的使用 120
實驗4 [bx]和loop的使用 121
第6章 包含多個段的程式 123
6.1 在程式碼段中使用資料 123
6.2 在程式碼段中使用棧 127
6.3 將資料、程式碼、棧放入不同的段 130
實驗5 編寫、除錯具有多個段的程式 133
第7章 更靈活的定位記憶體地址的
方法 138
7.1 and和or指令 138
7.2 關於ASCII碼 139
7.3 以字元形式給出的資料 139
7.4 大小寫轉換的問題 140
7.5 [bx+idata] 143
7.6 用[bx+idata]的方式進行陣列的
處理 144
7.7 SI和DI 147
7.8 [bx+si]和[bx+di] 149
7.9 [bx+si+idata]和[bx+di+idata] 150
7.10 不同的定址方式的靈活應用 152
實驗6 實踐課程中的程式 160
第8章 資料處理的兩個基本問題 161
8.1 bx、si、di和bp 161
8.2 機器指令處理的資料在什麼地方 162
8.3 組合語言中資料位置的表達 162
8.4 定址方式 164
8.5 指令要處理的資料有多長 165
8.6 定址方式的綜合應用 166
8.7 div指令 169
8.8 偽指令dd 170
8.9 dup 171
實驗7 定址方式在結構化資料訪問中
的應用 172
第9章 轉移指令的原理 175
9.1 操作符offset 175
9.2 jmp 指令 176
9.3 依據位移進行轉移的jmp指令 177
9.4 轉移的目的地址在指令中的jmp
指令 180
9.5 轉移地址在暫存器中的jmp指令 181
9.6 轉移地址在記憶體中的jmp指令 182
9.7 jcxz指令 184
9.8 loop指令 185
9.9 根據位移進行轉移的意義 186
9.10 編譯器對轉移位移超界的檢測 186
實驗8 分析一個奇怪的程式 187
實驗9 根據材料程式設計 187
第10章 CALL和RET指令 190
10.1 ret和retf 190
10.2 call指令 192
10.3 依據位移進行轉移的call指令 192
10.4 轉移的目的地址在指令中的call
指令 193
10.5 轉移地址在暫存器中的call指令 194
10.6 轉移地址在記憶體中的call指令 194
10.7 call和ret的配合使用 196
10.8 mul指令 199
10.9 模組化程式設計 200
10.10 引數和結果傳遞的問題 200
10.11 批量資料的傳遞 201
10.12 暫存器衝突的問題 203
實驗10 編寫子程式 206
課程設計1 211
第11章 標誌暫存器 213
11.1 ZF標誌 213
11.2 PF 標誌 214
11.3 SF 標誌 215
11.4 CF 標誌 216
11.5 OF 標誌 217
11.6 adc 指令 219
11.7 sbb指令 222
11.8 cmp指令 222
11.9 檢測比較結果的條件轉移指令 225
11.10 DF標誌和串傳送指令 230
11.11 pushf和popf 233
11.12 標誌暫存器在Debug中的表示 234
實驗11 編寫子程式 234
第12章 內中斷 236
12.1 內中斷的產生 236
12.2 中斷處理程式 237
12.3 中斷向量表 237
12.4 中斷過程 238
12.5 中斷處理程式和iret指令 239
12.6 除法錯誤中斷的處理 240
12.7 程式設計處理0號中斷 240
12.8 安裝 244
12.9 do0 246
12.10 設定中斷向量 249
12.11 單步中斷 249
12.12 響應中斷的特殊情況 250
實驗12 編寫0號中斷的處理程式 251
第13章 int指令 252
13.1 int指令 252
13.2 編寫供應用程式呼叫的中斷例程 253
13.3 對int、iret和棧的深入理解 256
13.4 BIOS和DOS所提供的中斷例程 258
13.5 BIOS和DOS中斷例程的安裝
過程 258
13.6 BIOS中斷例程應用 259
13.7 DOS中斷例程應用 261
實驗13 編寫、應用中斷例程 262
第14章 埠 265
14.1 埠的讀寫 265
14.2 CMOS RAM晶片 266
14.3 shl和shr指令 267
14.4 CMOS RAM中儲存的時間資訊 269
實驗14 訪問CMOS RAM 271
第15章 外中斷 272
15.1 介面晶片和埠 272
15.2 外中斷資訊 272
15.3 PC機鍵盤的處理過程 274
15.4 編寫int 9中斷例程 276
15.5 安裝新的int 9中斷例程 282
實驗15 安裝新的int 9中斷例程 285
第16章 直接定址表 287
16.1 描述了單元長度的標號 287
16.2 在其他段中使用資料標號 289
16.3 直接定址表 292
16.4 程式入口地址的直接定址表 296
實驗16 編寫包含多個功能子程式的
中斷例程 299
第17章 使用BIOS進行鍵盤輸入
和磁碟讀寫 300
17.1 int 9中斷例程對鍵盤輸入的處理 300
17.2 使用int 16h中斷例程讀取鍵盤
緩衝區 301
17.3 字串的輸入 304
17.4 應用int 13h中斷例程對磁碟進行
讀寫 308
實驗17 編寫包含多個功能子程式的
中斷例程 310
課程設計2 312
綜合研究 314
研究試驗1 搭建一個精簡的C語言
開發環境 315
研究試驗2 使用暫存器 318
研究試驗3 使用記憶體空間 319
研究試驗4 不用main函式程式設計 322
研究試驗5 函式如何接收不定數量的
引數 326
附註 327
附註1 Intel系列微處理器的3種工作
模式 327
附註2 補碼 329
附註3 彙編編譯器(masm.exe)對jmp的
相關處理 330
附註4 用棧傳遞引數 333
附註5 公式證明 336