TOP
0
0
三民出版.新書搶先報|最速、最優惠的新鮮貨報給你知!
匯編語言(第4版)(簡體書)
滿額折

匯編語言(第4版)(簡體書)

商品資訊

人民幣定價:49 元
定價
:NT$ 294 元
優惠價
87256
海外經銷商無庫存,到貨日平均30天至45天
下單可得紅利積點:7 點
商品簡介
作者簡介
名人/編輯推薦
目次
相關商品

商品簡介

匯編語言是各種CPU提供的機器指令的助記符的集合,人們可以用匯編語言直接控制硬件系統進行工作。匯編語言是很多相關課程(如數據結構、操作系統、微機原理等)的重要基礎。為了更好地引導、幫助讀者學習匯編語言,作者以循序漸進的思想精心創作了這本書。《匯編語言(第4版)》具有如下特點:采用了全新的結構對課程的內容進行組織,對知識進行z小化分割,為讀者構造了循序漸進的學習線索;在深入本質的層面上對匯編語言進行講解;對關鍵環節進行深入的剖析。

《匯編語言(第4版)》可用作大學計算機專業本科生的匯編語言教材及希望深入學習計算機科學的讀者的自學教材。


作者簡介

王 爽 著名計算機科學教育家,哲學家,在高等教育、計算機科學與技術、IT產業等諸多領域都有所成就。1975年出生於黑龍江省齊齊哈爾市。1997年畢業於寧夏大學計算機科學及應用專業。2007年開創了可行性哲學理論體系。從1999年起,陸續提出並實踐了知識屏蔽、線索化、多元環境、可持續性發展能力培養、純公益教育體系等一系列對我國教育事業的發展具有基礎意義與啟示意義的思想與理論。2005年到2012年,建立了“三個一工程”等多項旨在培養計算機專業學習者核心專業能力和綜合素質的大型教育公益事業。

王爽老師多年以來一直j極z力於推動教育發展的各項事業,是我國計算機專業領域的教育公益事業的開啟者與多項大型教育公益事業的建立者。從2005年起到2012年,其在教育領域所進行的理論與實踐工作,成為我國計算機專業領域的教育公益事業發展的基礎。


名人/編輯推薦

《匯編語言》是我國計算機科學教育領域的部重要的經典著作。本書可用作大學計算機專業本科生的匯編教材及希望深入學習計算機科學的讀者的自學教材。
本書自出版以來,受到業內專家和高校教師、廣大計算機專業學生和計算機科學與技術學習者的熱烈歡迎和高度評價。100多所高校用作教材,取得了非常好的教學效果。很多人在網絡上將其
與國外同專業名著相並列向廣大讀者推薦。本書很大程度地推動了我國計算機科學與技術教育的發展。本書出版15年連續印刷了45次,成為本專業學生和廣大學習者的必讀書。
為滿足新的出版需要,本社特請王爽老師對此書的第3版進行了修訂,出版第4版,以饗讀者。

前 言

匯編語言是很多相關課程(如數據結構、操作系統、微機原理等)的重要基礎。其實僅從課程關係的角度討論匯編語言的重要性未免片面,概括地說,如果你想從事計算機科學方面的工作的話,匯編語言的基礎是必不可缺的。原因很簡單,我們的工作平臺、研究物件都是機器,匯編語言是人和計算機溝通的最直接的方式,它描述了機器最終所要執行的指令序列。想深入研究英國文化,不會英語行嗎?匯編語言是和具體的微處理器相聯系的,每一種微處理器的匯編語言都不一樣,只能通過一種常用的、結構簡潔的微處理器的匯編語言來進行學習,從而達到學習匯編的兩個最根本的目的:充分獲得底層編程的體驗,深刻理解機器運行程序的機理。這兩個目的達到了,其他目的也就自然而然地達到了。舉例來說,你在學習操作系統等課程時,對許多問題就會有很通透的理解。

學習不能在一臺抽象的計算機上來進行,必須針對一臺具體的計算機來完成學習過程。為了使學習的過程容易展開,我們采用以8086CPU為中央處理器的PC機來進行學習。8086CPU滿足的條件:常用而結構簡潔,常用保證了可以方便地進行實踐,結構簡潔則便於進行教學。純粹的8086PC機已經不存在了,對於現今的機器來講,它已經屬於古玩。但是,現在的任何一臺PC機中的微處理器,只要是和Intel兼容的系列,都可以8086的方式進行工作。可以將一個奔騰系列的微處理器當作一個快速的8086微處理器來用。整個奔騰PC的工作情況也是如此,可以當作一臺高速的8086PC來用。關於微處理器及相關的一些問題請參看附注1。

為了更好地引導、幫助學習者學習匯編語言,作者精心創作了這本書。下面對教學思想和教學內容的問題進行一些探討,希望在一些重要的問題上和讀者達到共識。

1. 教學思想

一門課程是由相互關聯的知識構成的,這些知識在一本書中如何組織則是一種信息組織和加工的藝術。學習是一個循序漸進的過程,但並不是所有的教學都是以這種方式完成的,這並不是我們所希望看到的事情,因為任何不以循序漸進的方式進行的學習,都將出現盲目探索和不成系統的情況,最終學習到的也大都是相對零散的知識,並不能建立起一個系統的知識結構。非循序漸進的學習,也達不到循序漸進學習所能達到的深度,因為後者是步步深入的,每一步都以前一步為基礎。

你也許會問:“我們不是一直以循序漸進的方式學習嗎?有哪本書不是從第一章到最後一章,又有哪門課不是從頭講到尾的呢?”

一本書從第一章到最後一章,一門課從頭到尾,這是一個時間先後的問題,這並不等於就是以循序漸進的方式在學習。我們是否常有這樣的感受?想認真地學習一門較難的課程,可是卻經常看不懂書上的內容;有時覺得懂了,可又總有一種不能通透的感覺,覺得書上的內容再反復看,也不能深入下去了。這些情況都說明,我們並未真正以循序漸進的方式學習。

不能循序漸進地學習的根本原因在於:學習者所用的教材並未真正地按循序漸進的原則來構造。這不是一個簡單的問題,不是按傳統的方法劃分一下章節就可以解決的。舉例來說,在傳統的匯編教材中,一般都在開始的章節中集中講CPU的編程結構,這一章往往成為大多數初學者的障礙。這章所講的內容有的需要了解其他的知識才能深入理解,可是這些知識都被忽略了;有的需要有編程經驗才能深入理解,或不進行具體編程就根本無法理解,可編程要在後面的章節裡進行……

為學習者構造合理的學習線索,這個學習線索應真正地遵循循序漸進的原則。我們需要打破傳統的章節劃分,以一種新的藝術來對課程的內容進行補充、分割、重組,使其成為一個個串聯在學習線索上的完成特定教學功能的教學節點。本書以此作為創作的核心理念,打破了傳統的章節劃分,構造了合理的學習線索,將課程的內容拆解到學習線索中的各個教學節點中去。學習主線索上的教學節點有4類:①知識點(即各小節內容);②檢測點;③問題和分析;④實驗。還有一種被稱為附注的教學節點不在學習主線索之中,是由知識點引出的節點,屬於選看內容。

應用這本書,讀者將沿著學習線索來學習一個個知識點,通過一個個檢測點,被線索引入到一個個問題分析之中,並完成一個個實驗,線索上的每一個教學節點都是後續內容的基礎。每一個節點的信息量或難度,又只比前面的多一點,讀者在每一步的學習中都會有一種有的放矢的感覺。大的困難被分割,讀者在學習的過程中可逐步克服。

這好似航行,我們為學習者設計一條航線,航在線分布著港口,每一個港口都是下一個港口的起點。漫長的旅途被一個個港口分割,我們通過到達每個港口來完成整個航行。

為了按循序漸進的原則構造學習線索,本書采用了一種全新的信息組織和加工藝術,我們稱其為知識屏蔽。有的教材只注重知識的授予,並不注重知識的屏蔽。在教學中知識的屏蔽十分重要,這是一個重點突出的問題。計算機是一門交叉學科,一部分知識往往還連帶著其他的相關內容,這些連帶的相關內容如果處理不好,將影響學習者對目前要掌握的知識的理解。本書采用了知識屏蔽的方法,對教學內容進行了最小化分割,力求使我們在學習過程中所接觸到的每一個知識點都是當前唯一要去理解的東西。我們在看到這個知識點之前,已理解了以前所有的內容;在學習這個知識點的過程中,以後的知識也不會對我們造成幹擾。我們在整個學習過程中,每一步都走得清楚而扎實,不知不覺中,由當初的一個簡單的問題開始,在經歷了一個每一步都相對簡單的過程之後,被帶入了一個深的層次。這同沿著樓梯上高樓一樣,邁出的每一步都不高,結果卻上了樓頂。

2. 本書的結構

本書由若幹章構成,一章包含若幹知識點,根據具體內容,還可能包含檢測點、問題和分析、實驗、附注等教學節點。書中的所有教學節點,除附注之外,都在一個全程的主線索之中。

由於本書具有很強的線索性,學習一定要按照教學的線索進行,有兩點是必須要遵守的原則:①沒有通過檢測點不要向下學習;②沒有完成當前的實驗不要向下學習。

下面的表格詳細說明了書中的各種教學節點和它們的組織情況。

教學節點詳表

教學節點

說 明

知識點

學習者的主要知識來源。知識點以小節的形式出現,一個知識點為一個小節。每一個知識點都有一個相對獨立的小主題。

附注

有些內容是對主要內容的拓展、加深和補充。這些內容如果放入正文中,會分散學習者對主體內容的注意力,同時也破壞了主體內容的系統性。我們把這些內容在附注中給出,供學習者選看。附注不在主線索之中,是主線索的引出內容。

檢測點

檢測點用來取得學習情況的反饋。只要通過了檢測點,我們就得到了一個保證:已掌握了前面的內容。這是對學習成果的階段性的肯定,有了這個肯定,可以信心十足地繼續學習。如果沒有通過檢測點,需要回頭再進行復習。有的檢測點中也包含了一些具有教學功能的內容。

問題分析

引導學習者對知識進行深入的理解和靈活的應用。

實驗

在本書中,實驗也是在學習線索中的。有的教學內容就包含在編程的依據材料中。每一個實驗都是後續內容的基礎,實驗的任務必須獨立完成。我們可以這樣看待實驗的重要性,如果你沒有完成當前的實驗,就應停止繼續學習,直到你獨立完成實驗。

3. 教學重心和內容特點

本書的教學重心是:通過學習關鍵指令來深入理解機器工作的基本原理,培養底層編程意識和思想。本著這個原則,本書的內容將和傳統的教材有著很大的不同。

(1) 不講解每一條指令的功能

指令僅僅是學習機器基本原理和設計思想的一種實例。而逐條地講解每一條指令的功能,不是本書的職責所在,它應該是一本指令手冊的核心內容。這就好像文學作品和字典的區別,前者的重心在於用文字表達思想,後者講解每個字的用法。

(2) 編程的平臺是硬件而不是操作系統

這一點尤為重要,直接影響以後的操作系統的教學。我們必須通過一定的編程實踐,體驗一個裸機的環境,在一個沒有操作系統的環境中直接對硬件編程。這樣的體會和經驗非常重要,這樣我們才能真正體會到匯編語言的作用,並且看到沒有操作系統的計算機系統是怎樣的。這為以後的操作系統的學習打下了一個重要的基礎。

(3) 著重講解重要指令和關鍵概念

本書的所有內容都是圍繞著“深入理解機器工作的基本原理”和“培養底層編程意識和思想”這兩個核心目標來進行的。對所有和這兩個目標關係並不密切的內容,都進行了舍棄。使學習者可以集中注意力真正理解和掌握那些具有普遍意義的指令和關鍵概念。

本書在深入到本質的層面上對重要指令和關鍵概念進行了講解和討論。這些指令和概念有:jmp、條件轉移指令、call、ret、棧指令、int、iret、cmp、loop、分段、尋址方式等。

4. 讀者定位

本書可用作大學計算機專業本科的匯編教材,和希望深入學習計算機科學的學習者的自學教材。本書的讀者應具備以下基礎:

(1) 具有計算機的使用經驗;

(2) 具有二進制、十六進制等基礎知識;

(3) 具有一門高級語言(BASIC、Pascal、C…)的基本編程基礎。

目次

目 錄

第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













您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 256
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區