單元1: 基本概念.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

計算機程式語言實習課.
數字碼 加權碼 非加權碼 以各種數字系統表示的數碼 (如十進位、二進位、八進 位、十六進位等) BCD碼(又稱8, 4, 2, 1碼)
數位邏輯設計與實習 Ch02基本邏輯閘與布林代數.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
數字系統與資料表示法.
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
主題五 CPU Learning Lab.
數位資料表示法 2-1 資料型態 2-2 二進位表示法 2-3 各種進位表示法的轉換 2-4 整數表示法 2-5 浮點數表示法
基本程式範例.
正反器 一、循序邏輯電路 二、動作情形:用時序(timing),其次輸出( )是由外界輸入與( )所共同決定。
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
臺北市立大學 資訊科學系(含碩士班) 賴阿福
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
電腦系統 硬體 輸入單元 控制單元 算術邏輯單元 記憶單元 輔助儲存單元 輸出單元 軟體 作業系統 應用軟體 程式語言.
Visual C++ introduction
Chapter 1 Introduction.
第1章 認識Arduino.
邏輯設計 老師:羅峻旗 助教:楊斯竣.
2-3 基本數位邏輯處理※.
使用VHDL設計—4位元加法器 通訊一甲 B 楊穎穆.
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
Java程式概觀.
生物資訊程式語言應用 Part 3 Perl Language.
SQL Stored Procedure SQL 預存程序.
安裝JDK 安裝Eclipse Eclipse 中文化
數位邏輯 第2章數字系統 2-1數目系統 2-2數目系統的互換 2-3二進制有號數的加減運算 2-4文數字碼與同位偵錯碼.
Visual Basic 物件導向程式設計簡介.
使用VHDL設計-多工器/解多工器 通訊一甲 B 楊穎穆.
Topic Introduction—RMI
第一單元 建立java 程式.
第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式
第一章 直角坐標系 1-3 函數圖形.
第 19 章 XML記憶體執行模式.
雲端計算.
JAVA 程式設計 資訊管理系 - 網路組.
輸入&輸出 函數 P20~P21.
使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
CH05. 選擇敘述.
緩衝區溢位攻擊 學生:A 羅以豪 教授:梁明章
挑戰C++程式語言 ──第8章 進一步談字元與字串
第2章 電腦基本原理 2-1 數位化觀念 資訊科技概論--電腦科學導論.
數位邏輯設計與實習 Ch08實驗室實習.
電腦概論考題分析 佛學資訊組 碩一 張榮顯.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
邏輯設計 老師:羅峻旗 助教:楊斯竣.
陣列與結構.
第九章 布林代數與邏輯設計.
1.電腦數字系統介紹 2.電腦數字系統轉換 3.資料在電腦內部的表示法
一、簡介 電腦硬體設計:純硬體電路(hardware)及韌體電 路(firmware)兩種方式。
1-1 二元一次式運算.
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
數位邏輯 第2章數字系統 2-1數目系統 2-2數目系統的互換 2-3二進制有號數的加減運算 2-4文數字碼與同位偵錯碼.
資料表示方法 資料儲存單位.
第1章、系統軟體 作者:陳鍾誠 旗標出版社.
2 Number Systems, Operations, and Codes
安裝JDK 配置windows win7 環境變數
Programming & Language Telling the computer what to do
第 4 章、組譯器 作者:陳鍾誠 旗標出版社.
開發Java程式語言的工具 JDK.
第三章 Arduino互動程式設計入門 Arduino程式基礎 認識變數 認識數字系統 認識常數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
Chapter 4 Multi-Threads (多執行緒).
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

單元1: 基本概念

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

歡迎來到組合語言 一些很好的問題 組合語言的應用

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

歡迎來到組合語言的世界 (要旨) 組合語言和機器語言之間有什麼關聯性? C++和Java跟組合語言之間有什麼關聯性? 組合語言俱有可移值性嗎? 為什麼要學習組合語言?

組合語言的應用 一些代表性的應用: 單一平台的商業應用軟體 硬體裝置驅動程式 多平台的商業應用軟體 嵌入式系統和電腦遊戲 (see next panel)

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

下一步是什麼 歡迎來到組合語言的世界 虛擬機器的概念 資料表示法 布林運算

虛擬機器的概念 虛擬機器 特定用途機器

虛擬機器 電腦通常可以執行以本機機器語言形式所撰寫的程式,我們稱此種語言為 L0。 Tanenbaum:虛擬機器的概念 Programming Language analogy: 電腦通常可以執行以本機機器語言形式所撰寫的程式,我們稱此種語言為 L0。 假如有一個新的語言稱為 L1,此語言是希望程式設計者能夠易於使用,那麼我們就可以拿 L1 來開發程式。 用 L1 來開發程式,要達到此目的有兩種方法: : 直譯 – :在 L1 所寫的程式執行時,程式的每道指令都會由另一個用 L0 所寫的程 式加以解碼與執行 轉譯 –:整個用 L1 所寫的程式可以被轉換成 L0 的程式,其作法是,使用另一個為 了此目的而設計的L0程式來負責此動作, 然後所產生的L0程式便可以直接由電腦硬體執行。

Translating Languages English: Display the sum of A times B plus C. C++: cout << (A * B + C); 組合語言: mov eax,A mul B add eax,C call WriteInt Intel機器語言: A1 00000000 F7 25 00000004 03 05 00000008 E8 00500000

各層級的虛擬機器 (descriptions of individual levels follow . . . )

高階語言 Level 5 高階語言的應用方向 C++, Java, Pascal, Visual Basic . . . Level 5 的程式通常是以編譯器將其轉換成 Level 4 的程式,接著再轉譯 成 Level 4 的程式碼。

組合語言 Level 4 助憶碼有類似機器語言一對一的功能 中斷呼叫這樣的組合語言敘述式,則直接交由 Level 3 的作業系統加以執行。 組合語言是出現在 Level 4,它使用了許多簡短的助憶碼,例如ADD、 SUB 及 MOV 等等,這些助憶碼可以很容易地轉譯到 Level 2 的指令集架構。

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

指令集架構 Level 2 也了解傳統的機器語言。 每一個機器語言的指令會由數個微指令來負責執行。

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

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

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

資料表示法 二進位數值 二進位加法 整數儲存空間的大小 十六進位整數 有號整數 字元的儲存空間 二進位與十進位的轉換 十六進位與十進位的轉換 十六進位的減法 有號整數 二進位的減法 字元的儲存空間

二進位數值 數字不是1就是0 1 = 真 0 = 假 MSB –最大有效位元 LSB –最小有效位元 位元表:

二進位數值 每個位元不是1就是0 每個位元代表2的次方: 每個二進位的值是2次方的加總

將二進位的轉變為成十進位的 位加權表示法顯示出如何計算十進位中每個二進位的位元 的值: : 位加權表示法顯示出如何計算十進位中每個二進位的位元 的值: : dec = (Dn-1  2n-1) + (Dn-2  2n-2) + ... + (D1  21) + (D0  20) D =二進位數字 二進位的 00001001 = 十進位的 9: (1  23) + (1  20) = 9

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

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

整數儲存空間的大小 每種儲存空間單位的位元數目: 可能被儲存在20位元的最大無號整數是多少?

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

將二進位轉換成十六進位 十六進位整數中的每個數字,代表 4 個二進位位元,而兩個結合 起來的十六進位數字則能代表 1 個位元組。 例如: 000101101010011110010100 會等同於十 六進位整數 16A794 :

將無號十六進位整數轉換為十進位 每個數字位置都代表一個 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.

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

將無號十進位整數轉換為十六進位 十進位的422 = 十六進位的1A6

Hexadecimal Addition 36 28 28 6A 42 45 58 4B 78 6D 80 B5 Divide the sum of two digits by the number base (16). The quotient becomes the carry value, and the remainder is the sum digit. 1 1 36 28 28 6A 42 45 58 4B 78 6D 80 B5 21 / 16 = 1, rem 5 Important skill: Programmers frequently add and subtract the addresses of variables and instructions.

Hexadecimal Subtraction When a borrow is required from the digit to the left, add 16 (decimal) to the current digit's value: 16 + 5 = 21 -1 C6 75 A2 47 24 2E Practice: The address of var1 is 00400020. The address of the next variable after var1 is 0040006A. How many bytes are used by var1?

有號整數 最大有效位元 (MSB) 可以用於標示數值的正負號。此時,0 表示該整數為正,1 則表示該整數為負。 如果有一個十六進位的最高位元 > 7, 則此值為負號 例如: 8A, C5, A2, 9D

2's補數表示法 在表示負數時,可以使用 2‘s 補數表示法 在此表示法中,一個整數 的 2's 補數,即為它的加法逆元素 注意 00000001 + 11111111 = 00000000

二進位的減法 當要做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 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

Learn How To Do the Following: 形成十六進位整數二的補數 將有號二進位轉換成十進位 將有號十進位轉換成二進位 將有號十進位轉換成十六進位 將有號十六進位轉換成十進位

最大值與最小值 保留最高位元的符號,限定的範圍是: 練習: 可能儲存空間為20位元的最大整數值是多少

字元的儲存空間 字元集 空字元終止字串 使用ASCII字元表 標準的美國資訊交換標準碼 (0 – 127) 廣義的美國資訊交換標準碼 (0 – 255) 美國國家標準協會(0 – 255) 萬國碼標準(0 – 65,535) 空字元終止字串 一個由若干字元所組成的字串,而且這些字元後面緊接著其內容值為零的單一位元組 使用ASCII字元表 本書封底內頁有一個表格,其內列舉出在 MS-DOS 模式下執行時所使 用的 ASCII 碼。

數值資料表示法的術語 單純的二進位 ASCII 二進位 ASCII 十進位 ASCII 十六進位l 可以直接計算 數值字串為: "01010101" ASCII 十進位 數值字串為: "65" ASCII 十六進位l 數值字串為: "9C" next: Boolean Operations

下一個是什麼? 歡迎來到程式語言的世界 虛擬機器的概念 資料表示法 布林運算

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

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

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

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

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

運算子優先權 例子顯示出順序

真值表 (3-1) 布林函數會接收布林輸入,然後再產生布林輸出 真值表內會顯示所有可能的輸入和輸出。 範例: X  Y

真值表 (3-2) 範例: X  Y

真值表 (3-3) 範例: (Y  S)  (X  S) 二輸入多工器

摘要 組合語言幫助你學習如何在最低的標準下建構出軟體 組合語言和機器語言之間具有一對一的關係 虛擬機器概念是說明計算機架構中的每一層,如何代表一個抽象機器的有效方法 虛擬機器中的各層可以是硬體或軟體建構而成 布林運算式對電腦硬體與軟體的設計是非常重要的