華信教育資源網
匯編語言程序設計(第5版)
作   譯   者:錢曉捷 出 版 日 期:2018-06-01
出   版   社:電子工業出版社 維   護   人:章海濤 
書   代   號:G0315880 I S B N:9787121315886

圖書簡介:

本書為“十二五”普通高等教育本科國家級規劃教材,是教育部‐微軟精品課程教學成果。本書以Intel 80x86指令系統和MASM 6.x為主體,共10章,分為基礎和提高兩部分。前5章為基礎部分,以當前“匯編語言程序設計”...
定價 52.0

關注公眾號

關注微博

您的專屬聯系人更多
聯系人:楊寰
電話:13109885048
郵箱:yanghuan@phei.com.cn
關注 評論(2) 分享
配套資源 圖書內容 樣章試讀 圖書評價
  • 配 套 資 源
  • 圖 書 內 容

    圖書詳情

    ISBN:9787121315886

    開 本:16開

    印 張:23.0

    版 次:01-01

    頁 數:368

    字 數:584.0

    內容簡介

    本書為“十二五”普通高等教育本科國家級規劃教材,是教育部‐微軟精品課程教學成果。本書以Intel 80x86指令系統和MASM 6.x為主體,共10章,分為基礎和提高兩部分。前5章為基礎部分,以當前“匯編語言程序設計”課程的教學為目標,講解16位基本整數指令及其匯編語言程序設計的知識,包括:匯編語言程序設計基礎知識,8086指令詳解,MASM偽指令和操作符,程序格式,程序結構及其設計方法。后5章為提高部分,介紹匯編語言程序設計的深入內容和實際應用知識,包括:32位80x86 CPU的整數指令系統及其編程,匯編語言與C/C++混合編程,80x87 FPU浮點指令系統及其編程,多媒體擴展指令系統及其編程,64位指令簡介。本書可作為高等院校“匯編語言程序設計”課程的教材或參考書。本書內容廣博、語言淺顯、結構清晰、實例豐富,也適合電子信息、自動控制等專業的高校學生和成教學生、計算機應用開發人員、深入學習微機應用技術的普通讀者閱讀。

    本書目錄

    目  錄
    第1章  匯編語言基礎知識	1
    1.1  計算機系統概述	1
    1.1.1  計算機的硬件	1
    1.1.2  計算機的軟件	3
    1.1.3  計算機的程序設計語言	3
    1.2  數據表示	5
    1.2.1  數制	5
    1.2.2  數值的編碼	8
    1.2.3  字符的編碼	10
    1.3  Intel 80x86系列微處理器	13
    1.3.1  16位80x86微處理器	13
    1.3.2  IA-32微處理器	14
    1.3.3  Intel 64處理器	15
    1.4  微型計算機系統	16
    1.5  8086微處理器	18
    1.5.1  8086的功能結構	18
    1.5.2  8086的寄存器	19
    1.5.3  8086的存儲器組織	22
    1.6  8086的尋址方式	25
    1.6.1  8086的機器代碼格式	26
    1.6.2  立即數尋址方式	27
    1.6.3  寄存器尋址方式	28
    1.6.4  存儲器尋址方式	28
    1.6.5  數據尋址的組合	30
    習題1	31
    第2章  8086的指令系統	33
    2.1  數據傳送類指令	33
    2.1.1  通用數據傳送指令	33
    2.1.2  堆棧操作指令	36
    2.1.3  標志傳送指令	38
    2.1.4  地址傳送指令	39
    2.2  算術運算類指令	39
    2.2.1  狀態標志	39
    2.2.2  加法指令	41
    2.2.3  減法指令	42
    2.2.4  乘法指令	44
    2.2.5  除法指令	44
    2.2.6  符號擴展指令	45
    2.2.7  十進制調整指令	46
    2.3  位操作類指令	49
    2.3.1  邏輯運算指令	49
    2.3.2  移位指令	50
    2.3.3  循環移位指令	51
    2.4  控制轉移類指令	52
    2.4.1  無條件轉移指令	53
    2.4.2  條件轉移指令	54
    2.4.3  循環指令	57
    2.4.4  子程序指令	58
    2.4.5  中斷指令	59
    2.5  處理機控制類指令	61
    習題2	63
    第3章  匯編語言程序格式	68
    3.1  匯編語言程序的開發	68
    3.1.1  匯編語言程序的語句格式	68
    3.1.2  匯編語言的源程序框架	70
    3.1.3  匯編語言程序的開發過程	73
    3.1.4  DOS系統功能調用	82
    3.2  參數、變量和標號	84
    3.2.1  數值型參數	84
    3.2.2  變量定義偽指令	86
    3.2.3  變量和標號的屬性	90
    3.3  程序段的定義和屬性	92
    3.3.1  DOS的程序結構	92
    3.3.2  簡化段定義的格式	93
    3.3.3  完整段定義的格式	97
    3.4  復雜數據結構	100
    3.4.1  結構	100
    3.4.2  記錄	102
    習題3	103
    第4章  基本匯編語言程序設計	106
    4.1  順序程序設計	106
    4.2  分支程序設計	107
    4.2.1  單分支結構	107
    4.2.2  雙分支結構	108
    4.2.3  多分支結構	109
    4.3  循環程序設計	112
    4.3.1  計數控制循環	113
    4.3.2  條件控制循環	114
    4.3.3  多重循環	115
    4.3.4  串操作類指令	116
    4.4  子程序設計	121
    4.4.1  過程定義偽指令	122
    4.4.2  子程序的參數傳遞	124
    4.4.3  子程序的嵌套、遞歸和重入	127
    4.4.4  子程序的應用	129
    習題4	134
    第5章  高級匯編語言程序設計	137
    5.1  高級語言特性	137
    5.1.1  條件控制偽指令	137
    5.1.2  循環控制偽指令	139
    5.1.3  過程聲明和過程調用偽指令	141
    5.2  宏結構程序設計	143
    5.2.1  宏匯編	144
    5.2.2  重復匯編	149
    5.2.3  條件匯編	150
    5.3  模塊化程序設計	153
    5.3.1  源程序文件的包含	153
    5.3.2  目標代碼文件的連接	158
    5.3.3  子程序庫的調入	160
    5.4  輸入 / 輸出程序設計	162
    5.4.1  輸入/輸出指令	163
    5.4.2  程序直接控制輸入/輸出	164
    5.4.3  程序查詢輸入/輸出	165
    5.4.4  中斷服務程序	166
    習題5	173
    第6章  32位指令及其編程	176
    6.1  32位CPU的指令運行環境	176
    6.1.1  寄存器	177
    6.1.2  尋址方式	179
    6.1.3  機器代碼格式	180
    6.2  32位擴展指令	182
    6.2.1  數據傳送類指令	182
    6.2.2  算術運算類指令	184
    6.2.3  位操作類指令	185
    6.2.4  串操作類指令	185
    6.2.5  控制轉移類指令	186
    6.3  DOS下的32位程序設計	189
    6.4  32位新增指令	193
    6.4.1  80386新增指令	193
    6.4.2  80486新增指令	196
    6.4.3  Pentium新增指令	197
    6.4.4  Pentium Pro新增指令	201
    6.5  用匯編語言編寫32位Windows應用程序	202
    6.5.1  32位Windows應用程序的特點	203
    6.5.2  32位Windows控制臺程序	204
    6.5.3  Windows應用程序的開發	208
    6.5.4  創建消息窗口	209
    6.5.5  創建窗口應用程序	210
    習題6	217
    第7章  匯編語言與C/C++的混合編程	221
    7.1  Turbo C嵌入匯編方式	221
    7.1.1  嵌入匯編語句的格式	222
    7.1.2  匯編語句訪問C語言的數據	223
    7.1.3  嵌入匯編的編譯過程	224
    7.2  Turbo C模塊連接方式	225
    7.2.1  混合編程的約定規則	225
    7.2.2  匯編模塊的編譯和連接	227
    7.2.3  混合編程的參數傳遞	228
    7.2.4  匯編語言程序對C語言程序的調用	235
    7.3  匯編語言在Visual C++中的應用	238
    7.3.1  嵌入匯編語言指令	238
    7.3.2  調用匯編語言過程	241
    7.3.3  使用匯編語言優化C++代碼	245
    7.3.4  使用Visual C++開發匯編語言程序	248
    習題7	251
    第8章  80x87浮點指令及其編程	254
    8.1  浮點數據格式	254
    8.1.1  實數和浮點格式	254
    8.1.2  80x87的數據格式	257
    8.2  浮點寄存器	259
    8.3  浮點指令的程序設計	262
    8.3.1  浮點傳送類指令	263
    8.3.2  算術運算類指令	265
    8.3.3  超越函數類指令	268
    8.3.4  浮點比較類指令	269
    8.3.5  FPU控制類指令	273
    習題8	277
    第9章  多媒體指令及其編程	280
    9.1  MMX指令系統	280
    9.1.1  MMX的數據結構	280
    9.1.2  MMX指令	282
    9.1.3  MMX指令的程序設計	289
    9.2  SSE指令系統	291
    9.2.1  SIMD浮點指令	291
    9.2.2  SIMD整數指令	299
    9.2.3  高速緩存優化處理指令	301
    9.2.4  SSE指令的程序設計	302
    9.3  SSE2指令系統	306
    9.3.1  SSE2的數據類型	306
    9.3.2  SSE2浮點指令	307
    9.3.3  SSE2擴展指令	312
    9.3.4  SSE2指令的程序設計	314
    9.4  SSE3指令系統	316
    9.4.1  SSE3指令	316
    9.4.2  SSE3指令的程序設計	318
    習題9	319
    第10章  64位指令簡介	321
    10.1  64位方式的運行環境	321
    10.2  64位方式的指令	324
    附錄A  調試程序DEBUG	328
    A.1  DEBUG程序的調用	328
    A.2  DEBUG命令的格式	328
    A.3  DEBUG的命令	329
    A.4  程序片段的調試方法	333
    A.5  可執行程序文件的調試方法	334
    A.6  使用調試程序的注意事項	336
    附錄B  調試程序CodeView	338
    B.1  CodeView的菜單命令	338
    B.2  CodeView的窗口	340
    B.3  CodeView的設置	342
    B.4  使用CodeView的調試示例	343
    附錄C  匯編程序MASM的偽指令和操作符	346
    附錄D  80x86整數指令系統	347
    附錄E  常見匯編錯誤信息	353
    附錄F  輸入/輸出子程序庫	355
    參考文獻	356
    展開

    前     言

    前 言 本書以Intel 80x86指令系統和MASM 6.x為主體,在個人微機的MS-DOS和Windows操作系統平臺上,依據循序漸進的原則,以淺顯的語言、清晰的結構、豐富的實例,全面而系統地介紹整數指令、浮點指令、多媒體指令的匯編語言程序設計方法,以及匯編語言的模塊化開發、32位Windows應用程序的編寫、與C/C++混合編程等高級技術。 全書共10章,分為前5章的基礎部分和后5章的提高部分。 第1章總結性地給出進行匯編語言程序設計所需要學習的基本知識,包括微型計算機系統的軟件和硬件組成、數據表示,并重點展開8086通用寄存器和尋址方式。第2章詳盡講述8086微處理器整數指令的功能和使用,并引導讀者正確書寫每條指令、理解程序段的功能,以及編寫常見問題的匯編語言程序。第3章結合匯編語言源程序格式,引出程序開發、語句格式、常用偽指令和操作符、段定義等內容。第4章以程序設計技術為主線,結合大量的程序實例詳述順序、分支、循環、子程序結構的匯編語言程序設計方法。第5章介紹匯編語言的高級程序設計技術,包括MASM的高級語言特性、宏結構程序、模塊化程序設計和I/O程序設計。 第6章首先將16位指令及編程擴展到32位環境,其次介紹新增整數指令及其應用,最后重點展開利用匯編語言編寫32位Windows控制臺和窗口應用程序的開發環境和基本方法。第7章討論匯編語言與高級語言Turbo C和Visual C++的混合編程,并說明如何利用匯編語言優化C++代碼,以及利用Visual C++集成環境開發匯編語言程序的方法。第8章介紹Intel 80x87浮點數據格式、浮點指令及其程序設計方法。第9章介紹MMX、SSE、SSE2和SSE3多媒體指令及其編程方法。第10章簡介Intel 64結構的64位指令。 附錄內容包括:① DEBUG調試程序,可用于配合前5章,尤其是第1章和第2章尋址方式、指令功能、程序片段的學習;② CodeView調試程序的使用方法,可用于第3章以后進行源程序級的程序調試;③ 匯編程序MASM 6.11的偽指令、Intel 80x86整數指令和常見匯編錯誤列表;④ 與本書配套的輸入/輸出子程序庫的使用說明。 每章最后配有相當數量的習題,既可以作為課后作業,也可以作為上機練習。 本書特點 本書自2000年出版以來獲得廣大師生讀者好評,相繼被評為普通高等教育“十一五”國家級規劃教材、“十二五”普通高等教育本科國家級規劃教材。作者主持的“匯編語言程序設計”課程為教育部—微軟精品課程和河南省精品課程。總結教學經驗和改革思路,結合師生反饋,我們在前4版的基礎上編寫了本書,并保持了原來的諸多特點。 (1)知識全面 本書的編寫參照國內高校和自學考試“匯編語言程序設計”課程的本、專科教學大綱,兼顧相關專業教學要求,既滿足當前教學需求,又面向今后改革方向。 本書全面講解80x86指令系統及編程,除完整的8086指令外,還包括32位指令、浮點指令、多媒體指令。本書不僅介紹基本的匯編語言程序設計知識,還介紹高級匯編語言程序設計技術,如開發大型程序需要的模塊化方法、實際應用當中的混合編程實用技術、32位Windows應用程序編寫等。本書采用MASM 6.x匯編程序,采用簡化段定義源程序格式,涉及DOS和Windows操作系統平臺的匯編語言程序設計。 (2)教材實用 本書示例中的指令、程序片段和完整的源程序都經過驗證,能夠運行通過。本書經過4個版本、16年的使用,已經發現并糾正了絕大多數錯誤。 本書采用淺顯、明晰、循序漸進的描述方法,具有前后對照、貫穿始終的風格,加上清晰的結構、豐富的示例,使得本書既適合課堂教學,又適合讀者自學。配合本書,作者制作有精美的多媒體電子教案(PowerPoint演示文檔),為教師利用現代化教學手段提供方便。 (3)突出實踐 本書特別強調上機實踐,不僅在正文中引導讀者通過調試程序或者帶輸出結果的源程序理解指令、程序功能,各章還配有豐富的習題和上機練習題;附錄介紹調試程序的使用方法、調試指令和程序的步驟。 本書的結構安排適合盡早上機實踐,并將實踐過程貫穿始終。第1章引出MASM開發軟件包,可用于熟悉命令行MS-DOS基本操作(基于Windows),第2章充分利用調試程序學習指令功能和調試程序段,第3章引出完整的源程序格式,并給出程序開發方法。后續章節通過大量程序強化編程開發,還介紹了開發Windows應用程序的MASM32環境、利用Visual C++開發調試匯編語言程序的方法。 寫給教師 “匯編語言程序設計”的教學內容在高校相關學科的教學中有兩種處理方式。一種作為獨立的課程,這主要是用在計算機專業的本科、專科教學中;而在電子、通信、自動控制等專業則將匯編語言作為主體融入微機原理課程。本書內容自成一個相對完整的知識體系,適合作為獨立課程的教材,也可以作為微機原理課程的參考書和補充教材。傳統上,“匯編語言程序設計”課程在MS-DOS操作系統平臺上采用微軟的MASM匯編程序,介紹16位8086微處理器指令系統的程序設計。當前,有些院校已將匯編語言的教學重點轉向32位IA-32微處理器指令系統,操作系統平臺也過渡為Windows,也出現在Linux環境下的匯編語言課程。 本書從簡單的16位匯編語言入手,使其滿足當前教學要求(包括與“微機原理與接口技術”、“計算機組成原理”等課程的配合);在32位匯編語言展開許多深入的內容,使其面向以后的應用需求。本書在組織教學內容上,體現了許多新的理念。例如,沒有從純軟件角度介紹匯編語言,教學的重點是硬指令而不是偽指令,強調程序設計不是程序格式,引出實用技術但淡化具體應用,通過程序實例和上機實踐掌握程序設計方法,而不是通過大量細節的描述講解程序設計。 匯編語言的基本語句是處理器指令。對于Intel 80x86系列微處理器,由于其屬于復雜指令集計算機CISC,再加上幾十年發展的歷史沉淀,因此它的指令系統非常龐大和復雜。雖然作為本書的一個特色,介紹了Pentium 4及之前處理器的所有指令,但教材的重點教學內容卻是常用的簡單指令,全書的實例程序也主要采用各種處理器指令系統所共有的基本指令編寫。教師尤其應該注意這個問題,否則許多學生會面對繁雜的指令望而卻步、失去進一步學習的興趣。 各種高級語言程序設計的教學中,調試程序及程序的調試方法往往被忽略或回避,但作為低級程序語言的匯編語言不應避而不談。在匯編語言的教學過程中,可以利用調試程序的單步執行和斷點執行能力,直觀地理解指令和程序的功能,進而掌握程序的動態調試和排錯。對于專科層次或程度較低的學生,掌握調試程序本身就是一個似乎不可逾越的難關。一方面,教師可以通過多媒體教學手段,演示調試程序的使用;學生通過上機實踐學習調試程序。另一方面,本書自編了一個顯示輸出和鍵盤輸入的I/O子程序庫,教師和學生可以直接使用其中的子程序來編寫具有顯示結果的源程序,同時可以配合列表文件,暫時避開調試程序這個難點。這個I/O子程序庫可以作為一個教學案例,用于組織學習中有余力的學生圍繞輸入輸出子程序庫進行項目開發。 教材在主體教學內容上保持了兼容,仍然遵循由淺入深、循序漸進的原則:先16位8086指令系統、基本匯編語言編程技術,然后介紹32位指令編程,并將匯編語言知識加深,從混合編程、浮點編程、多媒體編程等角度展開。 與前一版相比,本書保持整體結構不變,主要修改集中在前4章,對相關知識單元(或知識點)進行更清晰的描述,具體如下: ① 第1章:改寫第1.2節(數據表示),修改寄存器等部分內容,添加若干數據尋址的圖形、增寫第1.6.5節(數據尋址的組合)。 ② 第2章:修改堆棧、符號擴展指令、指令尋址等部分內容,添加條件轉移、循環和子程序指令的若干圖形。 ③ 第3章:改寫第3.1.1節(語句格式)和3.1.2節(源程序框架),強調源程序框架的作用,刪除第3、4、5章中示例程序的框架性語句。修改配套軟件包組成、增加64位平臺操作方法等。 ④ 第4章:改寫第4.1節(順序程序設計),增加了多分支和循環的3個圖示。 ⑤ 其他章:改寫第8.1.1節(浮點格式)、增寫舍入處理示例,第10章中補充64位寄存器圖示和一個64位Windows示例程序。 寫給學生 學習匯編語言到底有什么用途?這是許多學生首先要提問的。 在計算機科學與技術的知識體系當中,“匯編語言程序設計”課程的教學內容屬于計算機系統結構的一個方面。匯編語言配合“計算機組成原理”和“微機原理及接口技術”等相關課程,幫助學生從軟件角度理解計算機工作原理;同時,為“操作系統”、“編譯原理”等課程提供必須的基礎知識,也是自動控制等與硬件相關應用領域的程序設計基礎。“匯編語言程序設計”課程是繼“高級語言程序設計”后的又一門計算機語言程序設計課程,但匯編語言是一種低級語言。通過匯編語言的學習,學生能比較全面地了解程序設計語言,利于更深入地學習和應用高級語言。 隨著高級語言的發展、可視化開發工具的應用,匯編語言往往被應用程序開發人員忽略,其應用領域也逐漸萎縮。但是,作為一個面向機器的程序設計語言,匯編語言具有直接有效控制硬件的能力,能夠編寫出運行速度快、代碼量小的高效程序,在許多場合具有不可替代的作用,如操作系統的核心程序段、實時控制系統的軟件、智能儀器儀表的控制程序、頻繁調用的子程序或動態連接庫、加密解密軟件、分析和防治計算機病毒,等等。 學習什么樣的匯編語言呢?這是許多學生感到困惑的。 匯編語言與處理器指令系統相關,不同的處理器指令系統具有不同的匯編語言。但是,作為一個底層開發語言,它還是有許多共性的。從指令系統的典型性、實用性、編程環境以及教學內容連續性等方面考慮,Intel 80x86指令系統作為“匯編語言程序設計”課程的主要教學內容具有顯而易見的優勢,應成為計算機及相關學科的首選。 日常工作和學習中廣泛使用的個人微機(PC)采用Intel 80x86或與之兼容的微處理器。個人微機過去使用DOS操作系統,現在主要使用Windows或Linux操作系統。由于DOS操作系統平臺比較簡單,對程序員限制少,是一個相對理想的教學環境,所以本書利用這個平臺展開匯編語言,選用DOS和Windows平臺下最常用的微軟MASM匯編程序。 許多學生總感覺16位指令、8086微處理器、DOS操作系統都是很“古老”和“陳舊”的內容,但它們實際上是32位指令、Pentium 4微處理器、Windows或Linux操作系統的基礎,都是基本知識。它們已經足夠復雜、完全能夠滿足教學要求。當然,本書在提高部分也對使用32位指令編寫Windows應用程序進行了詳細講解。因為有了16位匯編語言基礎,這部分提高內容也就比較容易掌握了。如果直接從32位指令和Windows平臺入門,往往需要大家學習很多其他內容才能夠真正進入匯編語言的教學。國內外以所謂32位保護方式展開Windows匯編語言教學的教材,實際上是利用了Windows控制臺環境。而Windows控制臺環境的操作和外觀與DOS操作系統一樣,其基本教學內容幾乎相同,不同的僅僅是調用操作系統功能的方法。介紹用匯編語言編寫Windows窗口應用程序的教材都要求讀者初步掌握匯編語言程序設計,并具有調用Windows應用程序接口API的編程經驗(往往需要學習Visual C++之后才能夠達到這個要求)。本書從基礎知識入手,囊括上述所有教學內容。相信讀者閱讀本書后,會對此有深刻的體會。 怎樣才能學好匯編語言呢?這又是許多學生深感無助的。 其實,學習匯編語言程序設計對先修知識要求不高。學生如果具備微機軟件的操作能力,尤其是DOS環境和常用命令的使用,可以更好地完成上機實踐(本書補充有這方面的知識,并構造一個MASM開發環境)。學生的高級語言(如C/C++)程序設計知識或經驗,將有助于更好地理解程序結構和混合編程。程序設計屬于軟件方面的內容,但由于匯編語言與硬件相關的特點,學生在計算機或微型機原理方面的知識對于深刻體會指令功能大有益處。“匯編語言程序設計”課程的相關課程是“微機原理與接口技術”或者“計算機組成原理”,后者是微機的硬件知識,加強了匯編語言在輸入/輸出和中斷等方面的應用。兩者共同為學生建立微型計算機的完整知識體系。 循序漸進的學習是對任何課程都有效的。不以循序漸進方式進行學習,往往會浪費寶貴的時間去盲目探索,最終學習到的內容可能是相對零散的知識,不能建立完整的、系統的知識結構。所以,建議學生遵循循序漸進的方法進行學習。首先,學生應理解每條常用指令的功能,能夠正確書寫每條指令;其次,學生通過閱讀示例程序,掌握常見功能程序段的編寫;再次,學生利用偽指令將程序段擴展成完整的源程序文件;隨后,學生就各種程序結構編寫常見問題的程序;最后,學生才編寫較大型程序和有一定難度的程序。 對程序設計類課程,沒有上機編程的實踐是無法真正掌握的。所以,學生需要加強實踐環節,應完成基本的上機指導編程要求,同時爭取多進行編程實踐,因為只有通過實際編程才能發現程序設計中的許多問題。不要輕視調試程序的作用,它是深入理解指令功能和程序執行過程的關鍵。請不要直接復制源程序代碼,一條一條語句的錄入編輯過程就是書寫正確語句、加深語句理解的絕好機會。 本書由錢曉捷主編,昝紅英、穆玲玲、邱保志參與了前兩版的編寫和修訂,關國利、張青、程楠也給予了幫助。作者對十多年來合作的同事深表謝意,大家共同的努力成就了本書、創建了精品課程。作者要特別感謝使用本書的教師、學生和讀者,是你們寶貴的意見建議和一貫支持催生了本版教材。 本書為任課教師提供配套的教學資源(含電子教案),需要者可登錄華信教育資源網站(http://www.zhisoo.com),注冊之后進行免費下載。 作 者 展開

    作者簡介

    本書暫無作者簡介
  • 樣 章 試 讀
  • 圖 書 評 價我要評論
華信教育資源網
黑龙江快乐十分_首页