《彙編語言基礎及驅動程式開發》是2012年出版的圖書,作者是戴水貴。《普通高校本科計算機專業特色教材精選·算法與程式設計:彙編語言基礎及驅動程式開發》對彙編語言作了全面介紹,並通過程式實例詳細講解了用彙編語言開發驅動程式的方法。共7章。第1章~4章為彙編語言基礎知識,第5章~7章是用彙編語言開發驅動程式。適用於彙編語言初學者,同時又是用彙編語言開發驅動程式的入門書。驅動程式涉及的內容比較多,《普通高校本科計算機專業特色教材精選·算法與程式設計:彙編語言基礎及驅動程式開發》以程式例的形式給出程式,讓讀者有整體概念,並在程式例中給出比較多的注釋,使讀者讀完一個程式後知道如何解決此類問題,並起到舉一反三的作用。
基本介紹
- 書名:彙編語言基礎及驅動程式開發
- 作者:戴水貴
- ISBN:9787302266495
- 頁數:318
- 定價:29.00元
- 出版時間:2012-3
- 副標題:彙編語言基礎及驅動程式開發
內容介紹,圖書目錄,
內容介紹
《普通高校本科計算機專業特色教材精選·算法與程式設計:彙編語言基礎及驅動程式開發》對彙編語言作了全面介紹,並通過程式實例詳細講解了用彙編語言開發驅動程式的方法。共7章。第1章~4章為彙編語言基礎知識,第5章~7章是用彙編語言開發驅動程式。適用於彙編語言初學者,同時又是用彙編語言開發驅動程式的入門書。驅動程式涉及的內容比較多,《普通高校本科計算機專業特色教材精選·算法與程式設計:彙編語言基礎及驅動程式開發》以程式例的形式給出程式,讓讀者有整體概念,並在程式例中給出比較多的注釋,使讀者讀完一個程式後知道如何解決此類問題,並起到舉一反三的作用。
圖書目錄
第1章 Windows彙編語言基礎知識1
1.1 如何學習Windows彙編語言1
1.2 Windows彙編語言與DOS彙編語言的區別1
1.3 二進制數2
1.3.1 將十進制數轉為二進制、八進制和十六進制數2
1.3.2 計算機記憶體中的數是以二進制表示的4
1.3.3 計算機容量的一些計量單位5
1.3.4 無符號數的表示範圍5
1.3.5 有符號數的表示範圍6
1.3.6 補碼7
1.3.7 數據的二進制存儲8
1.4 彙編語言的基本元素9
1.4.1 整數常量9
1.4.2 算術運算符及其優先權10
1.4.3 實數常量10
1.4.4 字元常量和字元串常量10
1.4.5 標識符11
1.4.6 偽指令12
1.4.7 指令和標號12
1.4.8 MASM中的@@標號12
1.4.9 注釋13
1.4.10 .model語句13
1.4.11 用.386指明使用的指令集14
1.4.12 節區的定義14
1.4.13 invoke偽指令15
1.4.14 續行號16
1.4.15 wsprintf格式化信息串函式和其他
輸入/輸出函式16 彙編語言基礎及驅動程式開發目錄 1.4.16 第一個輸入/輸出程式實例18
1.4.17 創建編譯連線環境19
1.4.18 編譯連線和運行20
1.4.19 建立編譯連線批命令檔案20
1.4.20 全局變數的定義和初始值20
1.4.21 局部變數23
1.4.22 可在程式代碼中插入數據23
1.4.23 等號偽指令23
1.4.24 EQU偽指令24
1.4.25 當前地址運算符$26
1.4.26 OFFSET、ADDR操作符和LEA指令26
1.4.27 ALIGN和EVEN偽指令27
1.4.28 PTR操作符27
1.4.29 TYPE操作符28
1.4.30 LENGTHOF操作符29
1.4.31 SIZEOF或SIZE操作符30
1.4.32 LABEL偽指令30
1.4.33 TYPEDEF和TYPEDEF PTR操作符31
1.4.34 基數控制偽指令RADIX34
1.4.35 ORG偽指令34
1.4.36 REPT偽指令34
1.4.37 ASSUME偽指令36
1.4.38 SHORT偽指令36
1.4.39 在彙編語言中調用C語言內部函式36
1.4.40 在C語言中嵌入彙編語言37
1.4.41 在C語言程式中調用彙編語言子程式38
1.4.42 在C語言程式中使用彙編語言程式中的變數40
1.4.43 在彙編語言程式中使用C語言程式中的變數40
1.4.44 在C++程式中調用彙編語言程式中的變數和子程式41
1.5 高級語法43
1.5.1 while-endw語句43
1.5.2 條件運算符44
1.5.3 repeat-until語句46
1.5.4 if-elseif-endif語句47
1.5.5 continue語句48
1.5.6 break if語句50
1.6 結構體51
1.6.1 結構體的定義51
1.6.2 定義結構體變數並初始化52
1.6.3 結構體成員名的使用方法52
1.6.4 結構體的嵌套定義和使用54
1.6.5 用EQU定義結構體變數55
1.6.6 結構體定義例56
1.7 共用體58
1.7.1 共用體的定義和使用58
1.7.2 共用體的嵌套定義62
1.7.3 共用體和結構體的交叉定義63
1.7.4 位結構RECORD和位禁止MASK64
1.8 宏66
1.8.1 宏的定義及使用方法66
1.8.2 入口參數的賦值符“∶=”和宏的默認值70
1.8.3 REQ偽指令71
1.8.4 EXITM、ECHO偽指令和%運算符71
1.8.5 %@Line和@FileCur彙編操作符73
1.8.6 <>運算符74
1.8.7 入口參數類型VARARG75
1.8.8 判運算元屬性偽指令 OPATTR75
1.8.9 @SizeStr()返回串大小78
1.8.10 @SubStr()從串中取子串79
1.8.11 SUBSTR從串中取子串80
1.8.12 替換操作符&80
1.8.13 TEXTEQU偽指令81
1.8.14 條件彙編偽指令82
1.8.15 FOR-ENDM宏指令87
1.8.16 FORC-ENDM宏指令88
1.9 過程89
1.9.1 無參過程的定義89
1.9.2 無參過程的調用方法89
1.9.3 有參過程的定義90
1.9.4 有參過程的調用方法90
1.9.5 過程中的USES參數91
1.9.6 過程中的語言類型92
1.9.7 用PROTO聲明過程92
1.9.8 過程中的值傳遞和地址傳遞92
1.9.9 用堆疊傳遞參數95
1.9.10 緩衝區溢出攻擊原理97
1.9.11 程式舉例99
1.10 用IDA將過程反彙編110
1.10.1 ENTER和LEAVE指令110
1.10.2 RET和RETN指令的區別112
1.10.3 不同類型過程的反彙編113
1.10.4 過程反彙編規律總結119
1.10.5 過程反彙編後的修改方法119
1.10.6 一個完整程式的反彙編120
1.10.7 option參數126
1.11 常用數值轉換庫函式128
1.12 庫函式應用程式舉例128
1.13 宏應用程式例133
1.13.1 宏$CTA0程式例133
1.13.2 宏$CT0程式例134
習題135
第2章 暫存器和字元串操作指令139
2.1 80386以上CPU處理器的暫存器139
2.1.1 32位通用暫存器139
2.1.2 16位段暫存器140
2.1.3 32位標誌暫存器140
2.1.4 算術運算影響的標誌142
2.1.5 有符號數和無符號數各有一套轉移指令145
2.1.6 轉移指令列表146
2.1.7 32位程式指針暫存器147
2.1.8 32位控制暫存器147
2.1.9 系統地址暫存器148
2.2 字元串操作指令148
2.2.1 REP MOVSB的使用方法(遞增複製)149
2.2.2 REP MOVSB的使用方法(遞減複製)151
2.2.3 REP STOSB的使用方法152
2.2.4 LODSB和STOSB的配合使用153
2.2.5 SCASB的使用方法153
2.2.6 CMPSB的使用方法156
2.2.7 LOOPNZ的使用方法158
習題161
第3章 指令詳解163
3.1 普通指令163
3.2 移位指令186
3.3 轉移指令191
3.4 特權指令191
第4章 實模式和保護模式記憶體管理197
4.1 地址線的根數和定址範圍的關係197
4.2 實地址模式下的邏輯地址199
4.3 保護模式200
4.3.1 保護模式下記憶體定址示意圖200
4.3.2 非系統段描述符的格式和含義201
4.3.3 系統段描述符的格式和含義203
4.3.4 定義段描述符結構體204
4.3.5 段描述符結構體使用例205
4.3.6 描述符表暫存器206
4.3.7 門描述符207
4.3.8 中斷描述符表209
4.3.9 分頁管理與映射210
習題213
第5章 Windows設備驅動程式基礎215
5.1 何為Windows設備驅動程式215
5.2 從一個最簡單的設備驅動程式開始216
5.2.1 一個最簡單的設備驅動程式217
5.2.2 註冊和運行219
5.3 UNICODE_STRING串結構體220
5.3.1 雙位元組字元串的定義方法220
5.3.2 UNICODE_STRING串結構體的使用方法221
5.3.3 用宏$CCOUNTED_UNICODE_STRING定義串221
5.3.4 用sprintf格式化信息串222
5.3.5 將ASCIIZ串轉為UNICODE_STRING串224
5.3.6 RtlUnicodeStringToAnsiString函式227
5.3.7 將一個簡單的程式反彙編228
5.3.8 用RtlInitUnicodeString和宏unicode生成
UNICODE_STRING串230
5.3.9 設備名和符號連線名的命名格式233
5.3.10 創建設備名和符號連線名程式實例233
5.4 Windows設備控制字234
5.4.1 用宏CTL_CODE構造設備控制字236
5.4.2 用宏從設備控制字中取出某個欄位237
5.5 用戶程式和驅動程式之間的調用關係一239
5.5.1 將使喇叭發聲的代碼放在DriverEntry中的驅動程式239
5.5.2 用CreateService和StartService註冊和運行驅動程式241
5.6 用戶程式和驅動程式之間的調用關係二244
5.6.1 將讀寫I/O連線埠的驅動程式的地址置入MajorFunction數組244
5.6.2 用戶程式用DeviceIoControl和驅動程式通信251
5.6.3 用.inf檔案安裝驅動程式254
第6章 核心模式下的檔案管理257
6.1 創建和刪除資料夾257
6.2 創建檔案和打開檔案寫259
6.3 打開檔案讀和刪除檔案261
6.4 將數據添加到檔案尾264
6.5 修改檔案屬性265
第7章 直接訪問硬碟269
7.1 用系統提供的驅動程式訪問硬碟269
7.2 如何獲取硬碟參數276
7.3 用in和out指令直接讀/寫硬碟扇區280
7.3.1 硬碟連線埠暫存器功能列表280
7.3.2 任務狀態段TSS中的I/O許可點陣圖284
7.3.3 一個修改I/O許可點陣圖的驅動程式285
7.3.4 一個直接讀取硬碟扇區的服務控制程式288
7.3.5 用in/out指令獲取硬碟序列號等參數299
7.4 在PCI配置空間中找出PCI-IDE控制器的配置空間300
附錄A 鍵盤掃描碼311
附錄B ASCII碼錶313
附錄C 習題答案315