關(guān)于我們
書單推薦
新書推薦
|
匯編語言:基于x86處理器(原書第8版) 讀者對象:讀者對象:1. 高校電子和計算機(jī)工程專業(yè)的教師和學(xué)生。 2. 嵌入式、物聯(lián)網(wǎng)等領(lǐng)域的研發(fā)人員。 3. 工業(yè)實(shí)時控制領(lǐng)域的工程師。
本書專門為Intel/Windows/DOS平臺編寫,對匯編語言進(jìn)行了完整且詳細(xì)的研究和講解,教授讀者在機(jī)器級編寫和調(diào)試程序。第1~9章包含匯編語言的基本概念、x86處理器架構(gòu)、匯編語言基礎(chǔ)、過程等核心概念,后續(xù)章節(jié)講解了結(jié)構(gòu)和宏、MS-Windows編程、浮點(diǎn)數(shù)處理和指令編碼等內(nèi)容。本書不僅可作為匯編語言課程的教材,還可以作為計算機(jī)系統(tǒng)基礎(chǔ)和體系結(jié)構(gòu)基礎(chǔ)方面的教材,符合國內(nèi)所提倡的系統(tǒng)觀教學(xué)理念。書中不僅講授具體問題的解決方案,而且注重幫助學(xué)生舉一反三,綜合應(yīng)用,學(xué)到的編程理念能順利應(yīng)用于其他編程的課程中。
譯者序
前言 關(guān)于作者 相關(guān)碼表 第1章 基本概念 1 1.1 歡迎來到匯編語言的世界 1 1.1.1 讀者可能會問的問題 2 1.1.2 匯編語言的應(yīng)用 4 1.1.3 本節(jié)回顧 5 1.2 虛擬機(jī)概念 5 1.2.1 本節(jié)回顧 6 1.3 數(shù)據(jù)表示 7 1.3.1 二進(jìn)制整數(shù) 7 1.3.2 二進(jìn)制加法 9 1.3.3 整數(shù)存儲大小 9 1.3.4 十六進(jìn)制整數(shù) 10 1.3.5 十六進(jìn)制加法 11 1.3.6 有符號二進(jìn)制整數(shù) 12 1.3.7 二進(jìn)制減法 14 1.3.8 字符存儲 14 1.3.9 二進(jìn)制編碼的十進(jìn)制數(shù) 16 1.3.10 本節(jié)回顧 16 1.4 布爾表達(dá)式 17 1.4.1 布爾函數(shù)的真值表 18 1.4.2 本節(jié)回顧 19 1.5 本章小結(jié) 20 1.6 關(guān)鍵術(shù)語 20 1.7 復(fù)習(xí)題和練習(xí) 21 1.7.1 簡答題 21 1.7.2 算法題 22 第2章 x86處理器架構(gòu) 23 2.1 一般概念 23 2.1.1 基本微機(jī)設(shè)計 23 2.1.2 指令執(zhí)行周期 24 2.1.3 讀取內(nèi)存 25 2.1.4 加載并執(zhí)行程序 26 2.1.5 本節(jié)回顧 27 2.2 32位x86處理器 27 2.2.1 操作模式 27 2.2.2 基本執(zhí)行環(huán)境 28 2.2.3 x86內(nèi)存管理 30 2.2.4 本節(jié)回顧 31 2.3 64位x86-64處理器 31 2.3.1 64位操作模式 32 2.3.2 基本的64位執(zhí)行環(huán)境 32 2.3.3 本節(jié)回顧 33 2.4 典型x86計算機(jī)的組件 33 2.4.1 母板 33 2.4.2 內(nèi)存 35 2.4.3 本節(jié)回顧 35 2.5 輸入/輸出系統(tǒng) 36 2.5.1 I/O訪問層次 36 2.5.2 本節(jié)回顧 38 2.6 本章小結(jié) 38 2.7 關(guān)鍵術(shù)語 39 2.8 復(fù)習(xí)題 40 第3章 匯編語言基礎(chǔ) 41 3.1 基本語言元素 41 3.1.1 第一個匯編語言程序 41 3.1.2 整數(shù)字面量 42 3.1.3 常整數(shù)表達(dá)式 43 3.1.4 實(shí)數(shù)字面量 43 3.1.5 字符字面量 44 3.1.6 字符串字面量 44 3.1.7 保留字 44 3.1.8 標(biāo)識符 45 3.1.9 偽指令 45 3.1.10 指令 46 3.1.11 本節(jié)回顧 48 3.2 示例:整數(shù)加減法 48 3.2.1 AddTwo程序 48 3.2.2 運(yùn)行和調(diào)試AddTwo程序 50 3.2.3 程序模板 54 3.2.4 本節(jié)回顧 54 3.3 匯編、鏈接和運(yùn)行程序 55 3.3.1 匯編–鏈接–執(zhí)行周期 55 3.3.2 列表文件 55 3.3.3 本節(jié)回顧 57 3.4 定義數(shù)據(jù) 57 3.4.1 內(nèi)部數(shù)據(jù)類型 57 3.4.2 數(shù)據(jù)定義語句 58 3.4.3 向AddTwo程序添加一個變量 58 3.4.4 定義BYTE和SBYTE數(shù)據(jù) 59 3.4.5 定義WORD和SWORD數(shù)據(jù) 61 3.4.6 定義DWORD和SDWORD數(shù)據(jù) 61 3.4.7 定義QWORD數(shù)據(jù) 62 3.4.8 定義壓縮的BCD(TBYTE)數(shù)據(jù) 62 3.4.9 定義浮點(diǎn)類型 62 3.4.10 變量相加程序 63 3.4.11 小端序 64 3.4.12 聲明未初始化數(shù)據(jù) 64 3.4.13 本節(jié)回顧 65 3.5 符號常量 65 3.5.1 等號偽指令 66 3.5.2 計算數(shù)組和字符串的大小 67 3.5.3 EQU偽指令 68 3.5.4 TEXTEQU偽指令 68 3.5.5 本節(jié)回顧 69 3.6 64位編程介紹 70 3.7 本章小結(jié) 71 3.8 關(guān)鍵術(shù)語 72 3.8.1 術(shù)語 72 3.8.2 指令、操作符及偽指令 72 3.9 復(fù)習(xí)題和練習(xí) 73 3.9.1 簡答題 73 3.9.2 算法題 73 3.10 編程練習(xí) 74 第4章 數(shù)據(jù)傳送、尋址及算術(shù)運(yùn)算 75 4.1 數(shù)據(jù)傳送指令 75 4.1.1 引言 75 4.1.2 操作數(shù)類型 75 4.1.3 直接內(nèi)存操作數(shù) 76 4.1.4 MOV指令 77 4.1.5 整數(shù)的零/符號擴(kuò)展 78 4.1.6 LAHF和SAHF指令 79 4.1.7 XCHG指令 80 4.1.8 直接–偏移量操作數(shù) 80 4.1.9 傳送數(shù)據(jù)的示例 81 4.1.10 本節(jié)回顧 83 4.2 加法和減法 84 4.2.1 INC和DEC指令 84 4.2.2 ADD指令 84 4.2.3 SUB指令 85 4.2.4 NEG指令 85 4.2.5 實(shí)現(xiàn)算術(shù)表達(dá)式 85 4.2.6 加減法影響的標(biāo)志 86 4.2.7 示例程序(AddSubTest) 88 4.2.8 本節(jié)回顧 89 4.3 與數(shù)據(jù)相關(guān)的操作符和偽指令 90 4.3.1 OFFSET操作符 90 4.3.2 ALIGN偽指令 91 4.3.3 PTR操作符 92 4.3.4 TYPE操作符 92 4.3.5 LENGTHOF操作符 93 4.3.6 SIZEOF操作符 93 4.3.7 LABEL偽指令 94 4.3.8 本節(jié)回顧 94 4.4 間接尋址 94 4.4.1 間接操作數(shù) 94 4.4.2 數(shù)組 95 4.4.3 變址操作數(shù) 96 4.4.4 指針 97 4.4.5 本節(jié)回顧 99 4.5 JMP和LOOP指令 100 4.5.1 JMP指令 100 4.5.2 LOOP指令 101 4.5.3 在Visual Studio調(diào)試器中顯示數(shù)組 102 4.5.4 整數(shù)數(shù)組求和 103 4.5.5 復(fù)制字符串 103 4.5.6 本節(jié)回顧 104 4.6 64位編程 105 4.6.1 MOV指令 105 4.6.2 64位版本的SumArray程序 105 4.6.3 加法和減法 106 4.6.4 本節(jié)回顧 107 4.7 本章小結(jié) 107 4.8 關(guān)鍵術(shù)語 109 4.8.1 術(shù)語 109 4.8.2 指令、操作符及偽指令 109 4.9 復(fù)習(xí)題和練習(xí) 109 4.9.1 簡答題 109 4.9.2 算法題 111 4.10 編程練習(xí) 112 第5章 過程 113 5.1 堆棧操作 113 5.1.1 運(yùn)行時堆棧(32位模式) 113 5.1.2 PUSH和POP指令 115 5.1.3 本節(jié)回顧 118 5.2 定義和使用過程 118 5.2.1 PROC偽指令 118 5.2.2 CALL和RET指令 120 5.2.3 嵌套過程調(diào)用 120 5.2.4 向過程傳遞寄存器參數(shù) 121 5.2.5 示例:整數(shù)數(shù)組求和 122 5.2.6 保存和恢復(fù)寄存器 123 5.2.7 本節(jié)回顧 124 5.3 鏈接到外部庫 124 5.3.1 背景信息 125 5.3.2 本節(jié)回顧 125 5.4 Irvine32庫 126 5.4.1 創(chuàng)建庫的動機(jī) 126 5.4.2 Win32控制臺窗口 127 5.4.3 各個過程的描述 128 5.4.4 庫測試程序 138 5.4.5 本節(jié)回顧 144 5.5 64位匯編編程 145 5.5.1 Irvine64庫 145 5.5.2 調(diào)用64位子例程 145 5.5.3 x64調(diào)用規(guī)約 146 5.5.4 調(diào)用過程的示例程序 146 5.5.5 本節(jié)回顧 147 5.6 本章小結(jié) 148 5.7 關(guān)鍵術(shù)語 149 5.7.1 術(shù)語 149 5.7.2 指令、操作符及偽指令 149 5.8 復(fù)習(xí)題和練習(xí) 149 5.8.1 簡答題 149 5.8.2 算法題 151 5.9 編程練習(xí) 152 第6章 條件處理 154 6.1 布爾和比較指令 154 6.1.1 CPU狀態(tài)標(biāo)志 154 6.1.2 AND指令 155 6.1.3 OR指令 156 6.1.4 位映射集 157 6.1.5 XOR指令 158 6.1.6 NOT指令 159 6.1.7 TEST指令 159 6.1.8 CMP指令 160 6.1.9 置位和清零各個CPU標(biāo)志 161 6.1.10 64位模式下的布爾指令 161 6.1.11 本節(jié)回顧 161 6.2 條件跳轉(zhuǎn) 162 6.2.1 條件結(jié)構(gòu) 162 6.2.2 Jcond指令 162 6.2.3 條件跳轉(zhuǎn)指令的類型 163 6.2.4 條件跳轉(zhuǎn)應(yīng)用 166 6.2.5 本節(jié)回顧 169 6.3 條件循環(huán)指令 170 6.3.1 LOOPZ和LOOPE指令 170 6.3.2 LOOPNZ和LOOPNE指令 170 6.3.3 本節(jié)回顧 171 6.4 條件結(jié)構(gòu) 171 6.4.1 塊結(jié)構(gòu)的IF語句 171 6.4.2 復(fù)合表達(dá)式 175 6.4.3 WHILE循環(huán) 176 6.4.4 表驅(qū)動的選擇 178 6.4.5 本節(jié)回顧 180 6.5 應(yīng)用:有限狀態(tài)機(jī) 181 6.5.1 驗證輸入字符串 181 6.5.2 驗證有符號整數(shù) 182 6.5.3 本節(jié)回顧 185 6.6 條件控制流偽指令(可選主題) 186 6.6.1 創(chuàng)建IF語句 186 6.6.2 有符號數(shù)和無符號數(shù)的比較 188 6.6.3 復(fù)合表達(dá)式 189 6.6.4 用.REPEAT和.WHILE創(chuàng)建循環(huán) 191 6.7 本章小結(jié) 192 6.8 關(guān)鍵術(shù)語 193 6.8.1 術(shù)語 193 6.8.2 指令、操作符及偽指令 193 6.9 復(fù)習(xí)題和練習(xí) 194 6.9.1 簡答題 194 6.9.2 算法題 195 6.10 編程練習(xí) 196 6.10.1 對代碼測試的建議 196 6.10.2 習(xí)題描述 197 第7章 整數(shù)算術(shù)運(yùn)算 200 7.1 移位和循環(huán)移位指令 200 7.1.1 邏輯移位和算術(shù)移位 200 7.1.2 SHL指令 201 7.1.3 SHR指令 202 7.1.4 SAL和SAR指令 202 7.1.5 ROL指令 203 7.1.6 ROR指令 204 7.1.7 RCL和RCR指令 204 7.1.8 有符號數(shù)溢出 205 7.1.9 SHLD/SHRD指令 205 7.1.10 本節(jié)回顧 207 7.2 移位和循環(huán)移位的應(yīng)用 207 7.2.1 多個雙字的移位 208 7.2.2 通過移位做乘法 208 7.2.3 顯示二進(jìn)制位 209 7.2.4 提取文件日期字段 210 7.2.5 本節(jié)回顧 210 7.3 乘法和除法指令 212 7.3.1 無符號整數(shù)乘法(MUL) 212 7.3.2 有符號整數(shù)乘法(IMUL) 213 7.3.3 測量程序執(zhí)行時間 216 7.3.4 無符號整數(shù)除法(DIV) 217 7.3.5 有符號整數(shù)除法(IDIV) 219 7.3.6 實(shí)現(xiàn)算術(shù)表達(dá)式 222 7.3.7 本節(jié)回顧 224 7.4 擴(kuò)展的加減法 225 7.4.1 ADC指令 225 7.4.2 擴(kuò)展加法的示例 225 7.4.3 SBB指令 227 7.4.4 本節(jié)回顧 228 7.5 ASCII和非壓縮十進(jìn)制算術(shù)運(yùn)算 228 7.5.1 AAA指令 229 7.5.2 AAS指令 230 7.5.3 AAM指令 231 7.5.4 AAD指令 231 7.5.5 本節(jié)回顧 231 7.6 壓縮十進(jìn)制的算術(shù)運(yùn)算 232 7.6.1 DAA指令 232 7.6.2 DAS指令 233 7.6.3 本節(jié)回顧 233 7.7 本章小結(jié) 234 7.8 關(guān)鍵術(shù)語 235 7.8.1 術(shù)語 235 7.8.2 指令、操作符及偽指令 235 7.9 復(fù)習(xí)題和練習(xí) 235 7.9.1 簡答題 235 7.9.2 算法題 237 7.10 編程練習(xí) 237 第8章 高級過程 240 8.1 引言 240 8.2 堆棧幀 240 8.2.1 堆棧參數(shù) 240 8.2.2 寄存器參數(shù)的缺點(diǎn) 241 8.2.3 訪問堆棧參數(shù) 243 8.2.4 32位調(diào)用規(guī)約 245 8.2.5 局部變量 246 8.2.6 引用參數(shù) 247 8.2.7 LEA指令 248 8.2.8 ENTER和LEAVE指令 249 8.2.9 LOCAL偽指令 250 8.2.10 Microsoft x64調(diào)用規(guī)約 251 8.2.11 本節(jié)回顧 252 8.3 遞歸 252 8.3.1 遞歸求和 253 8.3.2 計算階乘 254 8.3.3 本節(jié)回顧 258 8.4 INVOKE、ADDR、PROC及PROTO 259 8.4.1 INVOKE偽指令 259 8.4.2 ADDR操作符 260 8.4.3 PROC偽指令 260 8.4.4 PROTO偽指令 263 8.4.5 參數(shù)分類 266 8.4.6 示例:交換兩個整數(shù) 266 8.4.7 調(diào)試提示 267 8.4.8 WriteStackFrame過程 267 8.4.9 本節(jié)回顧 268 8.5 創(chuàng)建多模塊程序 269 8.5.1 隱藏和導(dǎo)出過程名 269 8.5.2 調(diào)用外部過程 269 8.5.3 跨模塊使用變量和符號 270 8.5.4 示例:ArraySum程序 271 8.5.5 用Extern創(chuàng)建模塊 271 8.5.6 用INVOKE和PROTO創(chuàng)建模塊 274 8.5.7 本節(jié)回顧 277 8.6 參數(shù)的高級用法(可選主題) 277 8.6.1 受USES操作符影響的堆棧 277 8.6.2 向堆棧傳遞8位和16位參數(shù) 278 8.6.3 傳遞64位參數(shù) 279 8.6.4 非雙字局部變量 280 8.7 Java字節(jié)碼(可選主題) 281 8.7.1 Java虛擬機(jī) 281 8.7.2 指令集 282 8.7.3 Java反匯編示例 283 8.7.4 示例:條件分支 285 8.8 本章小結(jié) 287 8.9 關(guān)鍵術(shù)語 288 8.9.1 術(shù)語 288 8.9.2 指令、操作符及偽指令 288 8.10 復(fù)習(xí)題和練習(xí) 288 8.10.1 簡答題 288 8.10.2 算法題 289 8.11 編程練習(xí) 289 第9章 字符串和數(shù)組 291 9.1 引言 291 9.2 字符串原語指令 291 9.2.1 MOVSB、MOVSW及MOVSD 292 9.2.2 CMPSB、CMPSW及CMPSD 293 9.2.3 SCASB、SCASW及SCASD 293 9.2.4 STOSB、STOSW及STOSD 294 9.2.5 LODSB、LODSW及LODSD 294 9.2.6 本節(jié)回顧 294 9.3 若干字符串過程 295 9.3.1 Str_compare過程 295 9.3.2 Str_length過程 296 9.3.3 Str_copy過程 297 9.3.4 Str_trim過程 297 9.3.5 Str_ucase過程 299 9.3.6 字符串庫演示程序 300 9.3.7 Irvine64庫中的字符串過程 301 9.3.8 本節(jié)回顧 304 9.4 二維數(shù)組 304 9.4.1 行列順序 304 9.4.2 基址–變址操作數(shù) 305 9.4.3 基址–變址–位移操作數(shù) 306 9.4.4 64位模式下的基址–變址操作數(shù) 307 9.4.5 本節(jié)回顧 308 9.5 整數(shù)數(shù)組的查找和排序 308 9.5.1 冒泡排序 309 9.5.2 對半查找 310 9.5.3 本節(jié)回顧 315 9.6 Java字節(jié)碼:字符串處理(可選主題) 315 9.7 本章小結(jié) 316 9.8 關(guān)鍵術(shù)語和指令 317 9.9 復(fù)習(xí)題和練習(xí) 317 9.9.1 簡答題 317 9.9.2 算法題 318 9.10 編程練習(xí) 318 第10章 結(jié)構(gòu)和宏 322 10.1 結(jié)構(gòu) 322 10.1.1 定義結(jié)構(gòu) 322 10.1.2 聲明結(jié)構(gòu)對象 323 10.1.3 引用結(jié)構(gòu)對象 324 10.1.4 示例:顯示系統(tǒng)時間 327 10.1.5 結(jié)構(gòu)包含結(jié)構(gòu) 329 10.1.6 示例:醉漢行走 329 10.1.7 聲明和使用聯(lián)合 332 10.1.8 本節(jié)回顧 334 10.2 宏 334 10.2.1 概述 334 10.2.2 定義宏 335 10.2.3 調(diào)用宏 336 10.2.4 其他宏特性 337 10.2.5 使用本書的宏庫(僅32位模式) 340 10.2.6 示例程序:封裝器 345 10.2.7 本節(jié)回顧 346 10.3 條件匯編偽指令 347 10.3.1 檢查缺失的參數(shù) 347 10.3.2 默認(rèn)參數(shù)初始化值 348 10.3.3 布爾表達(dá)式 348 10.3.4 IF、ELSE及ENDIF偽指令 349 10.3.5 IFIDN和IFIDNI偽指令 349 10.3.6 示例:矩陣行求和 350 10.3.7 特殊操作符 353 10.3.8 宏函數(shù) 356 10.3.9 本節(jié)回顧 357 10.4 定義重復(fù)語句塊 357 10.4.1 WHILE偽指令 358 10.4.2 REPEAT偽指令 358 10.4.3 FOR偽指令 358 10.4.4 FORC偽指令 359 10.4.5 示例:鏈表 360 10.4.6 本節(jié)回顧 361 10.5 本章小結(jié) 362 10.6 關(guān)鍵術(shù)語 363 10.6.1 術(shù)語 363 10.6.2 操作符及偽指令 363 10.7 復(fù)習(xí)題和練習(xí) 364 10.7.1 簡答題 364 10.7.2 算法題 364 10.8 編程練習(xí) 366 第11章 MS-Windows編程 368 11.1 Win32控制臺編程 368 11.1.1 背景信息 368 11.1.2 Win32控制臺函數(shù) 371 11.1.3 顯示消息框 373 11.1.4 控制臺輸入 375 11.1.5 控制臺輸出 380 11.1.6 讀寫文件 382 11.1.7 Irvine32庫中的文件I/O 385 11.1.8 測試文件I/O過程 386 11.1.9 控制臺窗口操作 389 11.1.10 控制光標(biāo) 392 11.1.11 控制文本顏色 392 11.1.12 時間和日期函數(shù) 394 11.1.13 使用64位Windows API 397 11.1.14 本節(jié)回顧 398 11.2 編寫圖形化的Windows應(yīng)用程序 398 11.2.1 必要的結(jié)構(gòu) 399 11.2.2 MessageBox函數(shù) 400 11.2.3 WinMain過程 400 11.2.4 WinProc過程 401 11.2.5 ErrorHandler過程 401 11.2.6 程序清單 402 11.2.7 本節(jié)回顧 405 11.3 動態(tài)內(nèi)存分配 405 11.3.1 HeapTest程序 408 11.3.2 本節(jié)回顧 411 11.4 32位x86存儲管理 411 11.4.1 線性地址 412 11.4.2 頁轉(zhuǎn)換 414 11.4.3 本節(jié)回顧 416 11.5 本章小結(jié) 416 11.6 關(guān)鍵術(shù)語 417 11.7 復(fù)習(xí)題和練習(xí) 417 11.7.1 簡答題 417 11.7.2 算法題 418 11.8 編程練習(xí) 418 第12章 浮點(diǎn)數(shù)處理和指令編碼 420 12.1 浮點(diǎn)數(shù)的二進(jìn)制表示 420 12.1.1 IEEE二進(jìn)制浮點(diǎn)數(shù)表示 420 12.1.2 階數(shù) 421 12.1.3 規(guī)格化二進(jìn)制浮點(diǎn)數(shù) 422 12.1.4 創(chuàng)建IEEE表示 422 12.1.5 將十進(jìn)制分?jǐn)?shù)轉(zhuǎn)換為二進(jìn)制實(shí)數(shù) 424 12.1.6 本節(jié)回顧 425 12.2 浮點(diǎn)單元 425 12.2.1 FPU寄存器棧 426 12.2.2 舍入 428 12.2.3 浮點(diǎn)異常 429 12.2.4 浮點(diǎn)指令集 429 12.2.5 算術(shù)運(yùn)算指令 432 12.2.6 比較浮點(diǎn)數(shù)值 435 12.2.7 讀寫浮點(diǎn)數(shù)值 437 12.2.8 異常同步 438 12.2.9 代碼示例 439 12.2.10 混合模式算術(shù)運(yùn)算 440 12.2.11 屏蔽和非屏蔽異常 441 12.2.12 本節(jié)回顧 442 12.3 x86指令編碼 443 12.3.1 指令格式 443 12.3.2 單字節(jié)指令 444 12.3.3 將立即數(shù)送入寄存器 444 12.3.4 寄存器模式指令 445 12.3.5 處理器操作數(shù)大小前綴 446 12.3.6 內(nèi)存模式指令 446 12.3.7 本節(jié)回顧 448 12.4 本章小結(jié) 449 12.5 關(guān)鍵術(shù)語 450 12.6 復(fù)習(xí)題和練習(xí) 450 12.6.1 簡答題 450 12.6.2 算法題 451 12.7 編程練習(xí) 452 第13章 高級語言接口 454 13.1 引言 454 13.1.1 通用規(guī)約 454 13.1.2 .MODEL偽指令 455 13.1.3 檢查編譯器生成的代碼 457 13.1.4 本節(jié)回顧 460 13.2 內(nèi)聯(lián)匯編代碼 461 13.2.1 Visual C++中的_?_asm偽指令 461 13.2.2 文件加密示例 463 13.2.3 本節(jié)回顧 465 13.3 將32位匯編語言代碼鏈接到C/C++ 466 13.3.1 IndexOf示例 466 13.3.2 調(diào)用C和C++函數(shù) 469 13.3.3 乘法表的示例 471 13.3.4 本節(jié)回顧 474 13.4 本章小結(jié) 474 13.5 關(guān)鍵術(shù)語 474 13.6 復(fù)習(xí)題 474 13.7 編程練習(xí) 475 第14章 16位MS-DOS編程 476 14.1 MS-DOS和IBM-PC 476 14.1.1 內(nèi)存組織 476 14.1.2 重定向輸入/輸出 478 14.1.3 軟件中斷 478 14.1.4 INT指令 478 14.1.5 16位程序的代碼編寫 479 14.1.6 本節(jié)回顧 481 14.2 MS-DOS功能調(diào)用(INT 21h) 481 14.2.1 若干輸出功能 482 14.2.2 Hello World程序示例 483 14.2.3 若干輸入功能 484 14.2.4 日期/時間功能 487 14.2.5 本節(jié)回顧 490 14.3 標(biāo)準(zhǔn)的MS-DOS文件I/O服務(wù) 490 14.3.1 創(chuàng)建或打開文件(716Ch) 491 14.3.2 關(guān)閉文件句柄(3Eh) 492 14.3.3 移動文件指針(42h) 493 14.3.4 獲取文件創(chuàng)建日期和時間 493 14.3.5 若干庫過程 494 14.3.6 示例:讀取和復(fù)制一個文本文件 495 14.3.7 讀取MS-DOS命令的尾部 496 14.3.8 示例:創(chuàng)建二進(jìn)制文件 498 14.3.9 本節(jié)回顧 501 14.4 本章小結(jié) 501 14.5 關(guān)鍵術(shù)語 503 14.6 編程練習(xí) 503 第15章 磁盤基礎(chǔ)知識 505 15.1 磁盤存儲系統(tǒng) 505 15.1.1 磁道、柱面及扇區(qū) 505 15.1.2 磁盤分區(qū)(卷) 506 15.1.3 本節(jié)回顧 507 15.2 文件系統(tǒng) 508 15.2.1 FAT12 508 15.2.2 FAT16 509 15.2.3 FAT32 509 15.2.4 NTFS 509 15.2.5 主磁盤區(qū) 510 15.2.6 本節(jié)回顧 510 15.3 磁盤目錄 511 15.3.1 MS-DOS目錄結(jié)構(gòu) 512 15.3.2 MS-Windows中的長文件名 513 15.3.3 文件分配表 515 15.3.4 本節(jié)回顧 515 15.4 讀寫磁盤扇區(qū) 515 15.4.1 扇區(qū)顯示程序 517 15.4.2 本節(jié)回顧 520 15.5 系統(tǒng)級文件功能 520 15.5.1 獲取磁盤空閑空間(7303h) 520 15.5.2 創(chuàng)建子目錄(39h) 523 15.5.3 刪除子目錄(3Ah) 523 15.5.4 設(shè)置當(dāng)前目錄(3Bh) 523 15.5.5 獲取當(dāng)前目錄(47h) 524 15.5.6 獲取和設(shè)置文件屬性(7143h) 524 15.5.7 本節(jié)回顧 525 15.6 本章小結(jié) 525 15.7 關(guān)鍵術(shù)語 526 15.8 編程練習(xí) 526 第16章 BIOS級編程 528 16.1 引言 528 16.1.1 BIOS數(shù)據(jù)區(qū) 528 16.2 使用INT 16h進(jìn)行鍵盤輸入 529 16.2.1 鍵盤如何工作 530 16.2.2 INT 16h功能 530 16.2.3 本節(jié)回顧 534 16.3 使用INT 10h進(jìn)行視頻編程 534 16.3.1 基本背景 534 16.3.2 控制顏色 536 16.3.3 INT 10h視頻功能 537 16.3.4 庫過程示例 546 16.3.5 本節(jié)回顧 547 16.4 使用INT 10h繪制圖形 547 16.4.1 INT 10h與像素有關(guān)的功能 548 16.4.2 程序DrawLine 548 16.4.3 笛卡爾坐標(biāo)程序 550 16.4.4 將笛卡爾坐標(biāo)轉(zhuǎn)換為屏幕坐標(biāo) 552 16.4.5 本節(jié)回顧 552 16.5 內(nèi)存映射的圖形 553 16.5.1 模式13h:320×200,256色 553 16.5.2 內(nèi)存映射圖形程序 554 16.5.3 本節(jié)回顧 556 16.6 鼠標(biāo)編程 557 16.6.1 鼠標(biāo)INT 33h功能 557 16.6.2 鼠標(biāo)跟蹤程序 561 16.6.3 本節(jié)回顧 565 16.7 本章小結(jié) 565 16.8 編程練習(xí) 566 網(wǎng)絡(luò)資源 附錄A MASM參考知識 附錄B x86指令集 附錄C BIOS和MS-DOS中斷 附錄D “本節(jié)回顧”的問題答案(第14~16章) 詞匯表
你還可能感興趣
我要評論
|