單元 1: 基本概念

51
單單 1: 單單單單

description

單元 1: 基本概念. 章節概要. 歡迎來到組合語言的世界 虛擬機器的概念 資料表示法 布林運算. 歡迎來到組合語言. 一些很好的問題 組合語言的應用. 疑問. 為什麼我們要學習組合語言 ? 讀者應該俱備什麼樣的背景智識 ? 什麼是組譯器 ? 我需要什麼樣的硬體及軟體 ? 讀者可以開發出什麼樣類型的程式 ? 讀者可以從這本書獲得什麼樣的資源 ? 讀者可以學習到什麼 ?. 歡迎來到組合語言的世界 ( 要旨 ). 組合語言和機器語言之間有什麼關聯性 ? C++ 和 Java 跟組合語言之間有什麼關聯性 ? 組合語言俱有可移值性嗎 ? - PowerPoint PPT Presentation

Transcript of 單元 1: 基本概念

Page 1: 單元 1:  基本概念

單元 1: 基本概念

Page 2: 單元 1:  基本概念

章節概要章節概要

• 歡迎來到組合語言的世界• 虛擬機器的概念 • 資料表示法 • 布林運算

Page 3: 單元 1:  基本概念

歡迎來到組合語言歡迎來到組合語言

• 一些很好的問題• 組合語言的應用

Page 4: 單元 1:  基本概念

疑問疑問

• 為什麼我們要學習組合語言 ?• 讀者應該俱備什麼樣的背景智識 ?• 什麼是組譯器 ?• 我需要什麼樣的硬體及軟體 ?• 讀者可以開發出什麼樣類型的程式 ?• 讀者可以從這本書獲得什麼樣的資源 ?• 讀者可以學習到什麼 ?

Page 5: 單元 1:  基本概念

歡迎來到組合語言的世界 歡迎來到組合語言的世界 (( 要旨要旨 ))

• 組合語言和機器語言之間有什麼關聯性 ?• C++ 和 Java 跟組合語言之間有什麼關聯性 ?• 組合語言俱有可移值性嗎 ?• 為什麼要學習組合語言 ?

Page 6: 單元 1:  基本概念

組合語言的應用組合語言的應用

• 一些代表性的應用 :• 單一平台的商業應用軟體• 硬體裝置驅動程式 • 多平台的商業應用軟體• 嵌入式系統和電腦遊戲

(see next panel)

Page 7: 單元 1:  基本概念

組合語言與高階語言的比較

Page 8: 單元 1:  基本概念

下一步是什麼下一步是什麼

• 歡迎來到組合語言的世界• 虛擬機器的概念• 資料表示法• 布林運算

Page 9: 單元 1:  基本概念

虛擬機器的概念虛擬機器的概念

• 虛擬機器• 特定用途機器

Page 10: 單元 1:  基本概念

虛擬機器虛擬機器

• Tanenbaum:虛擬機器的概念• Programming Language analogy:

• 電腦通常可以執行以本機機器語言形式所撰寫的程式,我們稱此種語言為 L0 。

• 假如有一個新的語言稱為 L1 ,此語言是希望程式設計者能夠易於使用,那麼我們就可以拿 L1 來開發程式。

• 用 L1 來開發程式,要達到此目的有兩種方法: :

• 直譯 – :在 L1 所寫的程式執行時,程式的每道指令都會由另一個用 L0 所寫的程 式加以解碼與執行

• 轉譯 –:整個用 L1 所寫的程式可以被轉換成 L0 的程式,其作法是,使用另一個為 了此目的而設計的 L0 程式來負責此動作, 然後所產生的 L0 程式便可以直接由電腦硬體執行。

Page 11: 單元 1:  基本概念

Translating LanguagesTranslating Languages

English: Display the sum of A times B plus C.

C++: cout << (A * B + C);

組合語言 :

mov eax,Amul Badd eax,Ccall WriteInt

Intel 機器語言 :

A1 00000000

F7 25 00000004

03 05 00000008

E8 00500000

Page 12: 單元 1:  基本概念

各層級的虛擬機器

(descriptions of individual levels follow . . . )

Page 13: 單元 1:  基本概念

高階語言高階語言

• Level 5• 高階語言的應用方向

• C++, Java, Pascal, Visual Basic . . .• Level 5 的程式通常是以編譯器將其轉換成

Level 4 的程式,接著再轉譯 成 Level 4 的程式碼。

Page 14: 單元 1:  基本概念

組合語言組合語言

• Level 4• 助憶碼有類似機器語言一對一的功能• 中斷呼叫這樣的組合語言敘述式,則直接交

由 Level 3 的作業系統加以執行。• 組合語言是出現在 Level 4 ,它使用了許多

簡短的助憶碼,例如 ADD 、 SUB 及 MOV 等等,這些助憶碼可以很容易地轉譯到 Level 2 的指令集架構。

Page 15: 單元 1:  基本概念

作業系統作業系統

• Level 3• 可以檢測 Level 4 的程式。 • 作業系統軟體會經過轉譯成為機器碼,然後

在 Level 2 機器上執行。

Page 16: 單元 1:  基本概念

指令集架構

• Level 2• 也了解傳統的機器語言。• 每一個機器語言的指令會由數個微指令來負

責執行。

Page 17: 單元 1:  基本概念

微架構

• Level 1• 翻譯傳統的機器指令 (Level 2)• 藉由數位硬體來執行動作 (Level 0)

Page 18: 單元 1:  基本概念

數位邏輯

• Level 0• CPU 是由數位邏輯閘建構成的。• 系統匯流排。• 記憶體。• 是由雙極電晶體所構成的。

next: Data Representation

Page 19: 單元 1:  基本概念

下一章下一章

• 歡迎來到程式語言的世界• 虛擬機器的概念 • 資料表示法• 布林運算

Page 20: 單元 1:  基本概念

資料表示法資料表示法

• 二進位數值 • 二進位與十進位的轉換

• 二進位加法 • 整數儲存空間的大小 • 十六進位整數

• 十六進位與十進位的轉換• 十六進位的減法

• 有號整數 • 二進位的減法

• 字元的儲存空間

Page 21: 單元 1:  基本概念

二進位數值二進位數值

• 數字不是 1 就是 0• 1 = 真• 0 = 假

• MSB –最大有效位元 • LSB –最小有效位元

• 位元表 :015

1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 0

MSB LSB

Page 22: 單元 1:  基本概念

二進位數值二進位數值

• 每個位元不是 1 就是 0• 每個位元代表 2 的次方 :

每個二進位的值是 2次方的加總

Page 23: 單元 1:  基本概念

將二進位的轉變為成十進位的將二進位的轉變為成十進位的

位加權表示法顯示出如何計算十進位中每個二進位的位元的值: :

dec = (Dn-1 2n-1) (Dn-2 2n-2) ... (D1 21) (D0 20)

D = 二進位數字

二進位的 00001001 = 十進位的 9:

(1 23) + (1 20) = 9

Page 24: 單元 1:  基本概念

將無號十進位整數轉換為二進位

• 將該十進位整數重複除以 2 ,並 且將每次除法運算的每個餘數,儲存起來作為各個二進位數字。

37 = 100101

Page 25: 單元 1:  基本概念

二進位加法

• 由最低階位元對 ( 最右邊 ) 開 始,並且將每個後續位元對相加起來。

Page 26: 單元 1:  基本概念

整數儲存空間的大小

可能被儲存在 20 位元的最大無號整數是多少 ?

每種儲存空間單位的位元數目:

Page 27: 單元 1:  基本概念

十六進位整數

二進位的值被十六進位取代

Page 28: 單元 1:  基本概念

將二進位轉換成十六進位將二進位轉換成十六進位

• 十六進位整數中的每個數字,代表 4 個二進位位元,而兩個結合 起來的十六進位數字則能代表 1 個位元組。

• 例如 : 000101101010011110010100 會等同於十 六進位整數 16A794 :

Page 29: 單元 1:  基本概念

將無號十六進位整數轉換為十進位

• 每個數字位置都代表一個 16 的次方 :dec = (D3 163) + (D2 162) + (D1 161) + (D0 160)

• 十六進位 1234 = (1 163) + (2 162) + (3 161) + (4 160)

或等於十進位的 4660 。

• 十六進位 3BA4 = (3 163) + (11 * 162) + (10 161) + (4 160), 或 十進位的 15,268.

Page 30: 單元 1:  基本概念

1616 的各次方的各次方

列舉出從 160 到 167 各個 16 的次方值

Page 31: 單元 1:  基本概念

將無號十進位整數轉換為十六進位

十進位的 422 = 十六進位的 1A6

Page 32: 單元 1:  基本概念

Hexadecimal AdditionHexadecimal Addition

• Divide the sum of two digits by the number base (16). The quotient becomes the carry value, and the remainder is the sum digit.

36 28 28 6A42 45 58 4B78 6D 80 B5

11

21 / 16 = 1, rem 5

Important skill: Programmers frequently add and subtract the addresses of variables and instructions.

Page 33: 單元 1:  基本概念

Hexadecimal SubtractionHexadecimal Subtraction

• When a borrow is required from the digit to the left, add 16 (decimal) to the current digit's value:

C6 75A2 4724 2E

1

16 + 5 = 21

Practice: The address of var1 is 00400020. The address of the next variable after var1 is 0040006A. How many bytes are used by var1?

Page 34: 單元 1:  基本概念

有號整數

最大有效位元 (MSB) 可以用於標示數值的正負號。此時,0 表示該整數為正, 1 則表示該整數為負。

如果有一個十六進位的最高位元 > 7, 則此值為負號

例如 : 8A, C5, A2, 9D

Page 35: 單元 1:  基本概念

2's補數表示法

• 在表示負數時,可以使用 2‘s 補數表示法 • 在此表示法中,一個整數 的 2's 補數,即為它的加法逆元素

注意 00000001 + 11111111 = 00000000

Page 36: 單元 1:  基本概念

二進位的減法二進位的減法

• 當要做 A-B 的動作時 , 將 B 轉換成二的補數• 即 A+(-B)

0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0

– 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1

0 0 0 0 1 0 0 1

練習 :1001 - 0101

Page 37: 單元 1:  基本概念

Learn How To Do the Following:Learn How To Do the Following:

• 形成十六進位整數二的補數• 將有號二進位轉換成十進位• 將有號十進位轉換成二進位• 將有號十進位轉換成十六進位• 將有號十六進位轉換成十進位

Page 38: 單元 1:  基本概念

最大值與最小值

保留最高位元的符號,限定的範圍是:

練習 : 可能儲存空間為 20 位元的最大整數值是多少

Page 39: 單元 1:  基本概念

字元的儲存空間

• 字元集 • 標準的美國資訊交換標準碼 (0 – 127)

• 廣義的美國資訊交換標準碼 (0 – 255)

• 美國國家標準協會 (0 – 255)

• 萬國碼標準 (0 – 65,535)

• 空字元終止字串• 一個由若干字元所組成的字串,而且這些字元

後面緊接著其內容值為零的單一位元組• 使用 ASCII字元表

• 本書封底內頁有一個表格,其內列舉出在 MS-DOS 模式下執行時所使 用的 ASCII 碼。

Page 40: 單元 1:  基本概念

數值資料表示法的術語

• 單純的二進位• 可以直接計算

• ASCII 二進位• 數值字串為 : "01010101"

• ASCII 十進位• 數值字串為 : "65"

• ASCII 十六進位 l• 數值字串為 : "9C"

next: Boolean Operations

Page 41: 單元 1:  基本概念

下一個是什麼下一個是什麼 ??

• 歡迎來到程式語言的世界• 虛擬機器的概念 • 資料表示法• 布林運算

Page 42: 單元 1:  基本概念

布林運算

• 否 (NOT) 運算:其符號為 ¬ 、 ~ 或 ' • (AND) 運算:其符號為 ∧ 或 • • (OR) 運算:其符號為 ∨ 或+ • 運算子優先權 • 真值表

Page 43: 單元 1:  基本概念

布林代數

• 布林運算式也在軟體程式設計中,用於表示邏 輯運算。十九世紀中期一位數學家 George Boole 所發明的

• 基本的布林運 算子 :• NOT, AND, OR

Page 44: 單元 1:  基本概念

NOTNOT

• NOT 運算可以將其運算元的布林值予以反轉• 真值表使用變數 X 來顯示出 NOT 運算的所有可能結果 :

NOT

數位閘圖形表示 :

Page 45: 單元 1:  基本概念

ANDAND

• 以下真值表 針對變數 X 和 Y 的值,顯示所有可能的結果 ( 陰影部分 ) :

AND

數位閘圖形表示 :

Page 46: 單元 1:  基本概念

OROR

• 真值表 針對變數 X 和 Y 的值,顯示所有可能的結果 ( 陰影部分 ) :

OR

數位閘圖形表示 :

Page 47: 單元 1:  基本概念

運算子優先權

• 例子顯示出順序

Page 48: 單元 1:  基本概念

真值表 真值表 (3-1)(3-1)

• 布林函數會接收布林輸入,然後再產生布林輸出• 真值表內會顯示所有可能的輸入和輸出。

範例 : X Y

Page 49: 單元 1:  基本概念

真值表 真值表 (3-2)(3-2)

• 範例 : X Y

Page 50: 單元 1:  基本概念

真值表 真值表 (3-3)(3-3)

• 範例 : (Y S) (X S)

二輸入多工器

Page 51: 單元 1:  基本概念

摘要摘要

• 組合語言幫助你學習如何在最低的標準下建構出軟體• 組合語言和機器語言之間具有一對一的關係• 虛擬機器概念是說明計算機架構中的每一層,如何代

表一個抽象機器的有效方法• 虛擬機器中的各層可以是硬體或軟體建構而成

• 布林運算式對電腦硬體與軟體的設計是非常重要的