組合語言 原文 高清 PDF 下載
阿新 • • 發佈:2021-12-24
獲取方式: 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