[ 收藏 ] [ 繁体中文 ]  
臺灣貨到付款、ATM、超商、信用卡PAYPAL付款,4-7個工作日送達,999元臺幣免運費   在線留言 商品價格為新臺幣 
首頁 電影 連續劇 音樂 圖書 女裝 男裝 童裝 內衣 百貨家居 包包 女鞋 男鞋 童鞋 計算機周邊

商品搜索

 类 别:
 关键字:
    

商品分类

  •  管理

     一般管理学
     市场/营销
     会计
     金融/投资
     经管音像
     电子商务
     创业企业与企业家
     生产与运作管理
     商务沟通
     战略管理
     商业史传
     MBA
     管理信息系统
     工具书
     外文原版/影印版
     管理类职称考试
     WTO
     英文原版书-管理
  •  投资理财

     证券/股票
     投资指南
     理财技巧
     女性理财
     期货
     基金
     黄金投资
     外汇
     彩票
     保险
     购房置业
     纳税
     英文原版书-投资理财
  •  经济

     经济学理论
     经济通俗读物
     中国经济
     国际经济
     各部门经济
     经济史
     财政税收
     区域经济
     统计 审计
     贸易政策
     保险
     经济数学
     各流派经济学说
     经济法
     工具书
     通货膨胀
     财税外贸保险类考试
     英文原版书-经济
  •  社会科学

     语言文字
     社会学
     文化人类学/人口学
     新闻传播出版
     社会科学总论
     图书馆学/档案学
     经典名家作品集
     教育
     英文原版书-社会科学
  •  哲学

     哲学知识读物
     中国古代哲学
     世界哲学
     哲学与人生
     周易
     哲学理论
     伦理学
     哲学史
     美学
     中国近现代哲学
     逻辑学
     儒家
     道家
     思维科学
     马克思主义哲学
     经典作品及研究
     科学哲学
     教育哲学
     语言哲学
     比较哲学
  •  宗教

  •  心理学

  •  古籍

     经部  史类  子部  集部  古籍管理  古籍工具书  四库全书  古籍善本影音本  中国藏书
  •  文化

     文化评述  文化随笔  文化理论  传统文化  世界各国文化  文化史  地域文化  神秘文化  文化研究  民俗文化  文化产业  民族文化  书的起源/书店  非物质文化遗产  文化事业  文化交流  比较文化学
  •  历史

     历史普及读物
     中国史
     世界史
     文物考古
     史家名著
     历史地理
     史料典籍
     历史随笔
     逸闻野史
     地方史志
     史学理论
     民族史
     专业史
     英文原版书-历史
     口述史
  •  传记

  •  文学

  •  艺术

     摄影
     绘画
     小人书/连环画
     书法/篆刻
     艺术设计
     影视/媒体艺术
     音乐
     艺术理论
     收藏/鉴赏
     建筑艺术
     工艺美术
     世界各国艺术概况
     民间艺术
     雕塑
     戏剧艺术/舞台艺术
     艺术舞蹈
     艺术类考试
     人体艺术
     英文原版书-艺术
  •  青春文学

  •  文学

     中国现当代随笔
     文集
     中国古诗词
     外国随笔
     文学理论
     纪实文学
     文学评论与鉴赏
     中国现当代诗歌
     外国诗歌
     名家作品
     民间文学
     戏剧
     中国古代随笔
     文学类考试
     英文原版书-文学
  •  法律

     小说
     世界名著
     作品集
     中国古典小说
     四大名著
     中国当代小说
     外国小说
     科幻小说
     侦探/悬疑/推理
     情感
     魔幻小说
     社会
     武侠
     惊悚/恐怖
     历史
     影视小说
     官场小说
     职场小说
     中国近现代小说
     财经
     军事
  •  童书

  •  成功/励志

  •  政治

  •  军事

  •  科普读物

  •  计算机/网络

     程序设计
     移动开发
     人工智能
     办公软件
     数据库
     操作系统/系统开发
     网络与数据通信
     CAD CAM CAE
     计算机理论
     行业软件及应用
     项目管理 IT人文
     计算机考试认证
     图形处理 图形图像多媒体
     信息安全
     硬件
     项目管理IT人文
     网络与数据通信
     软件工程
     家庭与办公室用书
  •  建筑

     执业资格考试用书  室内设计/装潢装修  标准/规范  建筑科学  建筑外观设计  建筑施工与监理  城乡规划/市政工程  园林景观/环境艺术  工程经济与管理  建筑史与建筑文化  建筑教材/教辅  英文原版书-建筑
  •  医学

     中医
     内科学
     其他临床医学
     外科学
     药学
     医技学
     妇产科学
     临床医学理论
     护理学
     基础医学
     预防医学/卫生学
     儿科学
     医学/药学考试
     医院管理
     其他医学读物
     医学工具书
  •  自然科学

     数学
     生物科学
     物理学
     天文学
     地球科学
     力学
     科技史
     化学
     总论
     自然科学类考试
     英文原版书-自然科学
  •  工业技术

     环境科学
     电子通信
     机械/仪表工业
     汽车与交通运输
     电工技术
     轻工业/手工业
     化学工业
     能源与动力工程
     航空/航天
     水利工程
     金属学与金属工艺
     一般工业技术
     原子能技术
     安全科学
     冶金工业
     矿业工程
     工具书/标准
     石油/天然气工业
     原版书
     武器工业
     英文原版书-工业技
  •  农业/林业

     园艺  植物保护  畜牧/狩猎/蚕/蜂  林业  动物医学  农作物  农学(农艺学)  水产/渔业  农业工程  农业基础科学  农林音像
  •  外语

  •  考试

  •  教材

  •  工具书

  •  中小学用书

  •  中小学教科书

  •  动漫/幽默

  •  烹饪/美食

  •  时尚/美妆

  •  旅游/地图

  •  家庭/家居

  •  亲子/家教

  •  两性关系

  •  育儿/早教

  •  保健/养生

  •  体育/运动

  •  手工/DIY

  •  休闲/爱好

  •  英文原版书

  •  港台图书

  •  研究生
     工学
     公共课
     经济管理
     理学
     农学
     文法类
     医学

  •  音乐
     音乐理论

     声乐  通俗音乐  音乐欣赏  钢琴  二胡  小提琴
  • Windows環境下32位彙編語言程序設計(典藏版)(含CD光盤1張)(
    該商品所屬分類:計算機/網絡 -> 計算機/網絡
    【市場價】
    489-710
    【優惠價】
    306-444
    【作者】 羅雲彬 
    【所屬類別】 圖書  計算機/網絡  程序設計  其他 
    【出版社】電子工業出版社 
    【ISBN】9787121207594
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    開本:16開
    紙張:膠版紙
    包裝:平裝

    是否套裝:否
    國際標準書號ISBN:9787121207594
    作者:羅雲彬

    出版社:電子工業出版社
    出版時間:2013年07月 

        
        
    "

    編輯推薦


    推薦購買:














    《Windows環境下32位彙編語言程序設計》第1版出版至今已經10年多了,第3版出版至今也已經3年多了,期間筆者收到了大量的讀者來信,對本書提出了各種意見和建議,綜合各方面的考慮,典藏版做了以下改進。

    ● 對第3版中已知的錯誤進行了修正,包括一些排版錯誤、錯別字和例子中的Bug。

    ● 對一些過時的內容進行了更新或刪除。

    ● 根據讀者的反饋,對部分章節進行了重寫。
     
    內容簡介
    Windows環境下32位彙編語言是一種全新的編程語言。它使用與C++語言相同的API接口,不僅可以開發出大型的軟件,而且是了解操作繫統運行細節的*方式。

    本書從編寫應用程序的角度,從“Hello,World!”這個簡單的例子開始到編寫多線程、注冊表和網絡通信等復雜的程序,通過70多個實例逐步深入Windows環境下32位彙編語言編程的方方面面。

    作者羅雲彬擁有10餘年彙編語言編程經驗,本書是作者多年來編程工作的總結,適合於欲通過Windows環境下32彙編語言編寫Windows程序的讀者。


    作者簡介
    羅雲彬,軟件工程師,現從事軟件項目管理、軟件工程實施、數據庫應用等領域的工作,在Windows操作繫統下的應用軟件編程方面有豐富的經驗,另外對Oracle數據庫的管理有深入的研究,是國內為數不多的OCM證書獲得者之一。

    彙編語言編程是作者的一大愛好,作者自1990年開始即使用彙編語言編寫程序,是Windows操作繫統流行後國內早研究Win32彙編編程的程序員之一,在1998年創建了專門探討彙編編程的網站,曾發表過大量關於彙編編程的文章和網上教程,經典作品《Windows環境下32位彙編語言程序設計》連續10年暢銷。
    目錄
    基礎篇
    第1章 背景知識 1
    1.1 Win32的軟硬件平臺 1
    1.1.1 80x86繫列處理器簡史 1
    1.1.2 Windows的歷史 3
    1.1.3 Win32平臺的背後——Wintel聯盟 5
    1.2 Windows的特色 6
    1.3 必須了解的基礎知識 7
    1.3.1 80x86處理器的工作模式 7
    1.3.2 Windows的內存管理 9
    1.3.3 Windows的特權保護 17
    第2章 準備編程環境 21
    2.1 Win32可執行文件的開發過程 21
    2.2 編譯器和鏈接器 23基礎篇

    第1章 背景知識 1

    1.1 Win32的軟硬件平臺 1

    1.1.1 80x86繫列處理器簡史 1

    1.1.2 Windows的歷史 3

    1.1.3 Win32平臺的背後——Wintel聯盟 5

    1.2 Windows的特色 6

    1.3 必須了解的基礎知識 7

    1.3.1 80x86處理器的工作模式 7

    1.3.2 Windows的內存管理 9

    1.3.3 Windows的特權保護 17

    第2章 準備編程環境 21

    2.1 Win32可執行文件的開發過程 21

    2.2 編譯器和鏈接器 23

    2.2.1 MASM繫列 23

    2.2.2 TASM繫列 27

    2.2.3 其他編譯器 28

    2.2.4 MASM,TASM還是NASM 29

    2.2.5 我們的選擇——MASM32 SDK軟件包 30

    2.3 創建資源 32

    2.3.1 資源編譯器的使用 32

    2.3.2 所見即所得的資源編輯器 32

    2.4 make工具的用法 34

    2.4.1 make工具是什麼 34

    2.4.2 nmake的用法 35

    2.4.3 描述文件的語法 36

    2.5 獲取資料 40

    2.5.1 Windows資料的來源 40

    2.5.2 Intel處理器資料 42

    2.6 構建編程環境 42

    2.6.1 IDE還是命令行 43

    2.6.2 本書推薦的工作環境 43

    2.6.3 嘗試編譯個程序 45

    第3章 使用MASM 47

    3.1 Win32彙編源程序的結構 47

    3.1.1 模式定義 49

    3.1.2 段的定義 51

    3.1.3 程序結束和程序入口 54

    3.1.4 注釋和換行 54

    3.2 調用API 55

    3.2.1 API是什麼 55

    3.2.2 調用API 56

    3.2.3 API參數中的等值定義 61

    3.3 標號、變量和數據結構 63

    3.3.1 標號 63

    3.3.2 全局變量 65

    3.3.3 局部變量 66

    3.3.4 數據結構 69

    3.3.5 變量的使用 71

    3.4 使用子程序 75

    3.4.1 子程序的定義 76

    3.4.2 參數傳遞和堆棧平衡 77

    3.5 高級語法 79

    3.5.1 條件測試語句 80

    3.5.2 分支語句 81

    3.5.3 循環語句 83

    3.6 代碼風格 85

    3.6.1 變量和函數的命名 86

    3.6.2 代碼的書寫格式 88

    3.6.3 代碼的組織 89

    初級篇

    第4章 個窗口程序 90

    4.1 開始了解窗口 90

    4.1.1 窗口是什麼 90

    4.1.2 窗口界面 91

    4.1.3 窗口程序是怎麼工作的 92

    4.2 分析窗口程序 99

    4.2.1 模塊和句柄 99

    4.2.2 創建窗口 101

    4.2.3 消息循環 108

    4.2.4 窗口過程 110

    4.3 窗口間的通信 115

    4.3.1 窗口間的消息互發 115

    4.3.2 在窗口間傳遞數據 119

    4.3.3 SendMessage和PostMessage函數的區別 119

    第5章 使用資源 121

    5.1 菜單和加速鍵 121

    5.1.1 菜單和加速鍵的組成 121

    5.1.2 菜單和加速鍵的資源定義 122

    5.1.3 使用菜單和加速鍵 128

    5.2 圖標和光標 140

    5.2.1 圖標和光標的資源定義 141

    5.2.2 使用圖標和光標 141

    5.3 位圖 145

    5.3.1 位圖簡介 145

    5.3.2 在資源中定義位圖 146

    5.4 對話框 147

    5.4.1 對話框簡介 147

    5.4.2 對話框的資源定義 149

    5.4.3 使用對話框 151

    5.4.4 在對話框中使用子窗口控件 154

    5.5 字符串資源 177

    5.6 版本信息資源 178

    5.6.1 版本信息資源的定義 179

    5.6.2 在程序中檢測版本信息 181

    5.7 二進制資源和自定義資源 183

    5.7.1 使用二進制資源 183

    5.7.2 使用自定義資源 184

    第6章 定時器和Windows時間 185

    6.1 定時器 185

    6.1.1 定時器簡介 185

    6.1.2 定時器的使用方法 186

    6.2 Windows時間 190

    6.2.1 Windows時間的獲取和設置 190

    6.2.2 計算時間間隔 191

    第7章 圖形操作 193

    7.1 GDI原理 193

    7.1.1 GDI程序的結構 194

    7.1.2 設備環境 197

    7.1.3 色彩和坐標 203

    7.2 繪制圖形 205

    7.2.1 畫筆和畫刷 212

    7.2.2 繪制像素點 216

    7.2.3 繪制圖形 216

    7.2.4 繪圖模式 221

    7.3 創建和使用位圖 222

    7.3.1 一個使用位圖的時鐘例子 222

    7.3.2 創建和使用位圖 232

    7.3.3 使用設備無關位圖 233

    7.4 塊傳送操作 235

    7.4.1 塊傳送方式 236

    7.4.2 塊傳送函數 237

    7.5 區域和路徑 241

    7.5.1 使用區域 241

    7.5.2 使用路徑 243

    界面篇

    第8章 通用對話框 245

    8.1 通用對話框簡介 245

    8.2 使用通用對話框 252

    8.2.1 “打開”文件和“保存”文件對話框 252

    8.2.2 字體選擇對話框 254

    8.2.3 “顏色”選擇對話框 256

    8.2.4 “查找”和“替換”文本對話框 257

    8.2.5 “頁面設置”對話框 260

    8.2.6 “瀏覽目錄”對話框 261

    第9章 通用控件 262

    9.1 通用控件簡介 262

    9.1.1 通用控件的分類 262

    9.1.2 使用通用控件 263

    9.2 使用狀態欄 268

    9.2.1 創建狀態欄 273

    9.2.2 狀態欄的控制消息 274

    9.2.3 在狀態欄上顯示菜單提示信息 276

    9.3 使用工具欄 277

    9.3.1 創建工具欄 284

    9.3.2 工具欄的控制消息 287

    9.3.3 工具欄的通知消息 290

    9.4 使用Richedit控件 294

    9.4.1 創建Richedit控件 305

    9.4.2 Richedit控件的控制消息 307

    9.4.3 Richedit控件的通知消息 317

    9.5 窗口的子類化 318

    9.5.1 什麼是窗口的子類化 318

    9.5.2 窗口子類化的實現 319

    9.6 控件的超類化 325

    9.6.1 什麼是控件的超類化 325

    9.6.2 控件超類化的實現 325

    繫統篇

    第10章 內存管理和文件操作 330

    10.1 內存管理 330

    10.1.1 內存管理基礎 330

    10.1.2 內存的當前狀態 331

    10.1.3 標準內存管理函數 333

    10.1.4 堆管理函數 338

    10.1.5 虛擬內存管理函數 343

    10.1.6 其他內存管理函數 347

    10.2 文件操作 348

    10.2.1 Windows的文件I/O 348

    10.2.2 創建和讀寫文件 350

    10.2.3 查找文件 360

    10.2.4 文件屬性 368

    10.2.5 其他文件操作 369

    10.3 驅動器和目錄 371

    10.3.1 邏輯驅動器操作 372

    10.3.2 目錄操作 375

    10.4 內存映射文件 377

    10.4.1 內存映射文件簡介 377

    10.4.2 使用內存映射文件 379

    第11章 動態鏈接庫和鉤子 388

    11.1 動態鏈接庫 388

    11.1.1 動態鏈接庫的概念 388

    11.1.2 編寫動態鏈接庫 389

    11.1.3 使用動態鏈接庫 395

    11.1.4 動態鏈接庫中的數據共享 404

    11.1.5 在VC++中使用動態鏈接庫 405

    11.2 Windows鉤子 408

    11.2.1 什麼是Windows鉤子 408

    11.2.2 遠程鉤子的安裝和使用 410

    11.2.3 日志記錄鉤子 418

    第12章 多線程 422

    12.1 進程和線程 422

    12.2 多線程編程 423

    12.2.1 一個單線程的“問題程序” 423

    12.2.2 多線程的解決方法 427

    12.2.3 與線程有關的函數 431

    12.3 使用事件對像控制線程 435

    12.3.1 事件 436

    12.3.2 等待事件 437

    12.3.3 進一步改進計數程序 439

    12.4 線程間的同步 441

    12.4.1 產生同步問題的原因 441

    12.4.2 各種用於線程間同步的對像 446

    第13章 過程控制 454

    13.1 環境變量和命令行參數 454

    13.1.1 環境變量 454

    13.1.2 命令行參數 457

    13.2 執行可執行文件 462

    13.2.1 方法一:Shell調用 462

    13.2.2 方法二:創建進程 464

    13.3 進程調試 473

    13.3.1 獲取運行中的進程句柄 473

    13.3.2 讀寫進程的地址空間 480

    13.3.3 調試API的使用 484

    13.4 進程的隱藏 494

    13.4.1 在Windows 9x中隱藏進程 494

    13.4.2 Windows NT中的遠程線程 495

    第14章 異常處理 508

    14.1 異常處理的用途 508

    14.2 使用篩選器處理異常 509

    14.2.1 注冊回調函數 509

    14.2.2 異常處理回調函數 511

    14.3 使用SEH處理異常 515

    14.3.1 注冊回調函數 516

    14.3.2 異常處理回調函數 518

    14.3.3 SEH鏈和異常的傳遞 521

    14.3.4 展開操作(Unwinding) 523

    應用篇

    第15章 注冊表和INI文件 527

    15.1 注冊表和INI文件簡介 527

    15.2 INI文件的操作 528

    15.2.1 INI文件的結構 528

    15.2.2 管理鍵值 529

    15.2.3 管理小節 537

    15.2.4 使用不同的INI文件 538

    15.3 對注冊表的操作 539

    15.3.1 注冊表的結構 539

    15.3.2 管理子鍵 541

    15.3.3 管理鍵值 552

    15.3.4 子鍵和鍵值的枚舉 553

    15.3.5 注冊表應用舉例 557

    第16章 WinSock接口和網絡編程 560

    16.1 Windows Socket接口簡介 561

    16.2 Windows Socket接口的使用 564

    16.2.1 IP地址的轉換 564

    16.2.2 套接字 568

    16.2.3 網絡應用程序的一般工作流程 571

    16.2.4 監聽、發起連接和接收連接 574

    16.2.5 數據的收發 577

    16.2.6 一個簡單的TCP服務端程序 580

    16.3 TCP應用程序的設計 586

    16.3.1 通信協議和工作線程的設計 587

    16.3.2 TCP聊天室例子——服務器端 596

    16.3.3 TCP聊天室例子——客戶端 604

    16.3.4 以非阻塞方式工作的TCP聊天室客戶端 611

    16.3.5 其他常用函數 622

    第17章 PE文件 626

    17.1 PE文件的結構 626

    17.1.1 概論 626

    17.1.2 DOS文件頭和DOS塊 627

    17.1.3 PE文件頭(NT文件頭) 629

    17.1.4 節表和節 634

    17.2 導入表 649

    17.2.1 導入表簡介 649

    17.2.2 導入表的結構 651

    17.2.3 查看PE文件導入表舉例 654

    17.3 導出表 657

    17.3.1 導出表的結構 657

    17.3.2 查看PE文件導出表舉例 660

    17.4 資源 663

    17.4.1 資源簡介 663

    17.4.2 資源的組織方式 664

    17.4.3 查看PE文件中的資源列表舉例 668

    17.5 重定位表 672

    17.5.1 重定位表的結構 673

    17.5.2 查看PE文件的重定位表舉例 675

    17.6 應用實例 677

    17.6.1 動態獲取API入口地址 677

    17.6.2 在PE文件上添加執行代碼 684

    第18章 ODBC數據庫編程 694

    18.1 基礎知識 694

    18.1.1 數據庫接口的發展歷史 694

    18.1.2 SQL語言 697

    18.1.3 ODBC程序的流程 699

    18.2 連接數據庫 700

    18.2.1 連接和斷開數據庫 700

    18.2.2 連接字符串 706

    18.3 數據的管理 709

    18.3.1 執行SQL語句 709

    18.3.2 執行結果的處理 714

    18.3.3 獲取結果集中的數據 716

    18.3.4 事務處理 721

    18.4 數據庫操作的例子 723

    18.4.1 結果集處理模塊 724

    18.4.2 例子的源代碼 729

    參考文獻 740

    附錄A、B、C(見本書配套光盤)
    前言
    從Windows出現開始,彙編語言似乎在慢慢地銷聲匿跡,但本書可以讓人放棄這個觀點,其實在Win32環境下,彙編語言依然強大。
    Why——為什麼選擇Win32彙編
    選擇Win32彙編的理由是什麼呢?
    在DOS時代,學習彙編就是學習繫統底層編程的代名詞,若要成為一名入門級的彙編程序員,就需要學習從CPU結構、CPU工作方式、各種硬件的編程方法到DOS工作方式等範圍很廣的知識。隨著Windows時代的到來,Windows像一堵巨大的牆,把我們和計算機的硬件隔離開。對於DOS的彙編程序員來說,就像在一夜之間,我們發現自己曾經學過的幾乎所有的東西都被Windows封裝到內核中去了,由於保護模式的存在,我們又無法像在DOS下那樣闖入繫統內核為所欲為。在Windows下用任何語言編程都必須遵循Windows的規範,彙編也不例外,也就是說,彙編不再是一種“有特權”的語言。面對洶湧而來的Visual C++,Visual Basic,PowerBuilder和Java等各個領域的猛將,從DOS時代“為所欲為”的“繫統警察”崗位下崗,在其他領域又沒有一技之長,彙編語言似乎失去了生存的意義,有很多人在DOS轉向Windows的時候放棄了彙編語言。從Windows出現開始,彙編語言似乎在慢慢地銷聲匿跡,但本書可以讓人放棄這個觀點,其實在Win32環境下,彙編語言依然強大。

    Why——為什麼選擇Win32彙編

    選擇Win32彙編的理由是什麼呢?

    在DOS時代,學習彙編就是學習繫統底層編程的代名詞,若要成為一名入門級的彙編程序員,就需要學習從CPU結構、CPU工作方式、各種硬件的編程方法到DOS工作方式等範圍很廣的知識。隨著Windows時代的到來,Windows像一堵巨大的牆,把我們和計算機的硬件隔離開。對於DOS的彙編程序員來說,就像在一夜之間,我們發現自己曾經學過的幾乎所有的東西都被Windows封裝到內核中去了,由於保護模式的存在,我們又無法像在DOS下那樣闖入繫統內核為所欲為。在Windows下用任何語言編程都必須遵循Windows的規範,彙編也不例外,也就是說,彙編不再是一種“有特權”的語言。面對洶湧而來的Visual C++,Visual Basic,PowerBuilder和Java等各個領域的猛將,從DOS時代“為所欲為”的“繫統警察”崗位下崗,在其他領域又沒有一技之長,彙編語言似乎失去了生存的意義,有很多人在DOS轉向Windows的時候放棄了彙編語言。

    但是經過短暫的失落,擺正了自己在繫統中的位置,我們發現從“繫統警察”轉換到遵循Windows規範的“好市民”後,彙編語言又慢慢地在這個世界流行起來了。畢竟,不能為所欲為也可以有好的一面,我們可以不必再考慮一些老大難的問題,如程序運行時會面對什麼樣的顯示卡,如何驅動不同的打印機,內存不夠了如何用磁盤交換,等等。我們也可以在了解更少硬件知識的情況下就可以掌握Win32的彙編編程。而且,我們驚喜地發現,做了“好市民”以後,我們反而擁有了和其他語言同樣的權利——為了做圖形和界面等方面的功能,彙編程序員在DOS時代連做夢都在羨慕C語言龐大的函數庫,而現在,Windows為我們提供了比這還要多得多的函數,以至於其他大部分語言可以做出來的功能,彙編都可以做,而其他語言做不到的功能,彙編照樣可以做!所以這就是理由之一:Win32彙編可以當做一種功能強大的開發語言使用,使用它完全可以開發出大型的軟件來。

    正因為Win32彙編看上去不再那樣低級,於是有讀者曾經提出:Win32彙編講的都是用API來寫程序,和高級語言差不多,以前在DOS下使用的中斷什麼的都不能用,所以沒有什麼新奇的了。還有讀者認為本書隻不過是MSDN的彙編版本而已。言下之意就是:學彙編就是為了了解高級語言底下一層的功能,但現在Win32彙編卻使用和C++等語言相同的API接口,既然和高級語言處於同一個級別,我們為什麼還要去和機器指令打交道呢,還不如去學Visual C++方便。

    但是我們可以這樣問一問自己:

    問:在DOS彙編中我們為什麼用中斷功能?

    答:為了使用DOS內核提供的功能。

    問:在DOS中我們常常自己用操作I/O端口的方法讀寫硬盤或操作顯卡嗎?

    答:不,我們用繫統提供的int 13h和int 10h。

    ……

    同樣,在Win32彙編裡使用API也是為了使用Windows內核提供的功能。隻不過使用的方式不再是中斷方式而已,這不是Win32彙編語言“高級化”了,而是高級語言因為使用Windows的API接口而“低級化”了,其代價就是無法移植到其他繫統,用Visual C++寫的程序是無法移植到其他操作繫統平臺上的,隻有和平臺無關的ANSI C++等纔能算是真正意義上的高級語言。

    其實,任何彙編語言都是和操作繫統密切相關的,不管是DOS彙編、Win32彙編,還是Linux彙編,都是基於特定的操作繫統的,如果一定要繞過操作繫統,那麼就不會有DOS彙編和Win32彙編的區別了,但是這樣的話我們不是在學彙編,而是在自己開發操作繫統。高級語言在不同的操作繫統上看起來都差不多,但作為一種低級語言,不同操作繫統上的彙編就是不同的世界。所以,既然Windows和DOS是兩個完全不同的操作繫統,我們就必須拋棄DOS彙編中的大部分概念從頭開始學習Win32彙編。這就是理由之二:Win32彙編是Windows環境下一種全新的編程語言。

    Win32環境下的很多高級語言,如Visual C++和Visual Basic等,一如既往地對實現的細節進行了或深或淺的封裝,就連能表現Windows特征的部分,如消息循環和多線程的處理等內容也都被隱藏封裝,使我們在使用它們進行可視化編程的同時,無法全面了解Win32程序運行的具體方式。在學習Win32彙編以後,這些隱藏在高級語言後面的細節就暴露出來了。

    由於封裝的關繫,各種高級語言或多或少存在某種“缺陷”,比如VB不支持指針,結果很多需要使用指針的API用起來就很不方便,像多線程一類的特征在VB中就無法實現,PowerBuilder也是如此;C語言已經是靈活的高級語言了,但還是無法在代碼級別處理某些需求;而彙編語言見到的是一個真實的操作繫統,它可以用靈活的方式使用各種繫統功能,第13章中有關進程隱藏的內容就是好的寫照。所以理由之三就是:使用Win32彙編語言是了解操作繫統運行細節的方式。

    後的理由根本不是理由,而是必然的選擇,當我們在Windows環境下進行加密解密、逆向工程,還有病毒、木馬等有害代碼的分析和防治工作時,Win32彙編是的選擇。在任何討論這方面內容的書籍中,彙編代碼的篇幅總是很大的。因此,深入了解這些內容的前提就是深入彙編編程。

    How——如何學習Win32彙編

    以往的彙編書籍往往把重點放在硬件結構和指令上,講述了一大堆電路框圖和指令列表,把大家搞得暈暈乎乎後,再舉出一些重量級的例子,不是一些像數組、矩陣計算一類的復雜運算,就是開始圖形模式畫圖,以至於大家看完以後就再也找不到北了!實際上,這些例子不是太難,而是太枯燥了。有人說,學彙編就像考大學,千軍萬馬過獨木橋,太多的人中途放棄了,隻有少數人堅持到後。

    筆者認為:學習彙編應該在輕松的環境下進行,在學習中使用的例子不一定太復雜,但一定要有吸引力。用彙編寫復雜的運算程序固然會比C更有效率,但同樣的事在C中用一個表達式就全部搞定了,從這裡開始學彙編,給人的感覺就像從復雜的公式開始學算術,要知道,加法還沒有學會呢!而對於高級語言封裝起來的繫統功能,用彙編解釋起來就非常直接,非常自然,也更容易懂。以筆者自己學彙編的過程來說,那時候是1990年,剛好是中國次病毒大流行,大家的計算機上都是那個病毒的開山鼻祖——乒乓病毒,在流行DOS的時期,看著在屏幕上蹦的小球,心中就有一個問題:如何編出這樣一個玩意來呢?要知道DOS是單任務的,而那個球在別的程序運行的時候照樣蹦!這用當時流行的FORTRAN、C等課程中學到的任何知識都無法解釋,因為這些課程中不可能有TSR、中斷、引導區等內容。帶著這樣一個疑問學習彙編,在分析乒乓病毒的過程中啃一條條不懂的指令,病毒分析完了,彙編課也學完了,而且反過來看那些復雜的計算程序都是那麼順理成章,不攻自破了。實際上,從一些實用的繫統功能開始學習彙編遠比學矩陣計算容易理解。

    正如經典的C程序就是那個“Hello,World!”一樣,這個程序的有名並不是因為它用高深復雜的語句放倒了一大批人,而是它以簡單易懂的方式讓人們走入C語言的大門。對於Win32彙編也是如此,從簡單的例子開始總是沒錯的,筆者建議讀者跟隨本書中從簡到繁的例子,努力做到理解並靈活引用這些例子中的各種功能,正如“熟讀唐詩三百首,不會寫詩也會吟”,後能夠熟練地使用Win32彙編來解決各種編程需求就是的勝利。

    另外,正如前面講到的,彙編語言的學習必須和操作繫統緊密結合。經過簡單的調查,筆者發現很多高校使用的彙編教程還是停留在清華91版《IBM-PC彙編語言程序設計》之類的教材上,雖然這些教材中基礎知識部分永遠不會過時,但涉及操作繫統的部分還是停留在DOS階段。隨著DOS操作繫統的悄然引退,繼續把精力花在上面是一種浪費,因為任何語言都必須有應用的平臺,否則課程學完之後會尷尬地發現沒有地方可以應用。筆者認為,在《IBM-PC彙編語言程序設計》之類傳統教材中的基礎部分學習完畢以後,重點就應該轉向Win32彙編,以及保護模式方面的知識。

    關於本書的內容

    本書嘗試從編寫應用程序的角度,從“Hello,World”這個簡單的例子開始到編寫多線程、注冊表和網絡通信等復雜的程序,通過70多個從簡單到復雜的例子,逐步深入Win32彙編編程的方方面面。筆者從事彙編編程已經有十幾年的歷史了,從8086時代的DOS彙編編程開始到當前的Win32彙編編程,從一個初學者到現在能利用Win32彙編來解決大部分編程需求,中間也經過了很長時間的摸索和大量的挫折,所以筆者很清楚初學者在哪些地方會遇到問題,但是涉及Win32彙編的書籍卻實在太少了。正是因為如此,筆者決心把本書的目標定為:能讓讀者入門並在後能熟練掌握Win32彙編編程,而不是那種深入繫統奧秘一類的書籍。

    從這個目標出發,本書的選材中盡量去掉已經有其他書籍詳細討論的部分,因為要一本書涉及全部方面是不現實的。內容全面就必然不精,內容深刻就必須圍繞一個中心點,所以本書的內容並不詳細討論一般彙編教材的基礎部分,如處理器結構和保護模式等,也不準備涉及Windows驅動程序、COM編程或者其他能夠冠以“密技”頭銜的內容。本書主要的內容將放在32位宏彙編對比DOS彙編所不同的部分,以及Win32應用程序的彙編實現上。不求全面,隻求精也!(說句老實話,也不敢對自己不精通的地方妄加評論,以免破壞自己的良好形像。? )

    在一些彙編編程論壇上,經常有初學者問到MASM和TASM有什麼不同,用哪個比較好,@@標號是什麼意思,為什麼用下載的彙編編譯器無法編譯程序等問題,雖然這些都屬於基本的問題,但是以前的確沒有一個地方或者有一本書能繫統全面地講解這些問題。本書的基礎篇就是因此而設的,它們是:

    ● 第1章 背景知識

    ● 第2章 準備編程環境

    ● 第3章 使用MASM

    當搭建編譯環境和對編譯器的使用不再成為絆腳石的時候,初學者的問題往往集中在對Windows程序結構的迷惑上,消息驅動體繫、窗口過程、與硬件隔絕的圖形接口及資源文件等相對於DOS程序來說都是全新的內容。接下來的4章將深入討論這些內容,通過這幾章,讀者應該開始習慣以Windows的方式考慮問題了(腦海中的DOS逐漸遠去……),這就是本書的初級篇:

    ● 第4章 個窗口程序

    ● 第5章 使用資源
    媒體評論

    在線試讀

    書摘插畫
    插圖






     
    網友評論  我們期待著您對此商品發表評論
     
    相關商品
    在線留言 商品價格為新臺幣
    關於我們 送貨時間 安全付款 會員登入 加入會員 我的帳戶 網站聯盟
    DVD 連續劇 Copyright © 2024, Digital 了得網 Co., Ltd.
    返回頂部